이것은 아마도 불가능하지만이 수업이 있습니다.
public class Metadata<DataType> where DataType : struct
{
private DataType mDataType;
}
더 많은 것이 있지만 간단하게 유지합시다. 일반 유형 (DataType)은 where 문에 의해 값 유형으로 제한됩니다. 내가하고 싶은 것은 다양한 유형 (DataType)의 메타 데이터 개체 목록입니다. 같은 :
List<Metadata> metadataObjects;
metadataObjects.Add(new Metadata<int>());
metadataObjects.Add(new Metadata<bool>());
metadataObjects.Add(new Metadata<double>());
이것도 가능합니까?
추상 기본 클래스와 인터페이스는 모두 목록에 추가 할 수있는 요소 유형을 제한하여 제어 수준을 제공합니다. 또한 권투가 어떻게 나오는지 알 수 없습니다.
—
0b101010
물론 .NET v4.0 이상을 사용하는 경우 공분산이 솔루션입니다.
—
0b101010
List<Metadata<object>>트릭을 수행합니다.
@ 0b101010, 둘 다 참조 유형 만 제한하고 내장 된 값 유형 및 모든 구조를 계속 추가 할 수 있습니다. 또한 결국
—
Saeb Amini
MetaData에는 각 요소의 기본 값 유형에 대한 정보 (컴파일 시간)가없는 원래 값 유형 대신 참조 유형 목록이 있습니다. 이는 실제로 "박싱"입니다.
List<object>. 그들은 권투 / 언 박싱을 멈추지 않으며, 캐스팅의 필요성을 제거하지 않을 것이며, 궁극적으로Metadata실제에 대해 아무것도 알려주지 않는 객체를 얻습니다DataType. 나는 그 문제를 해결할 솔루션을 찾고있었습니다. 인터페이스 / 클래스를 선언하려는 경우 구현 / 파생 일반 유형을 일반 목록에 넣을 수 있기 때문에 의미없는 레이어가 아닌 다른 것을 사용 하는 것과 다른 점 은List<object>무엇입니까?