C#에서 Reflection을 사용하여 런타임에 컬렉션 속성의 개체 유형을 확인하려고합니다. 이러한 개체는 Entity Framework에서 생성되는 엔터티입니다.C#의 컬렉션에있는 개체 유형을 확인하는 방법
Type t = entity.GetType();
PropertyInfo [] propInfo = t.GetProperties();
foreach(PropertyInfo pi in propInfo)
{
if (pi.PropertyType.IsGenericType)
{
if (pi.PropertyType.GetGenericTypeDefinition()
== typeof(EntityCollection<>))
// 'ToString().Contains("EntityCollection"))' removed d2 TimWi's advice
//
// ---> this is where I need to get the underlying type
// ---> of the objects in the collection :-)
// etc.
}
}
컬렉션에 포함 된 개체 유형을 어떻게 식별합니까?
편집 : 위의 업데이트 된 코드, 그것은 당신이 컬렉션 형식의 제네릭 인수를 검색 할 수 GetGenericArguments()
을 사용할 수 있습니다
를 뭐죠 당신이 해결하려는 문제? 왜 컬렉션의 유형을 알아야합니까? 나는 그들이 모두 같은 타입이 아닌 것으로 생각한다? – PatrickSteele
사실 그들은 같은 유형입니다. 새 개체를 만들어 사용자가 값을 설정하도록해야하지만 디자인 타임에 형식을 알지 못합니다. 따라서 리플렉션을 사용하여 생성자를 가져오고 궁극적으로 적절한 컬렉션에 새 객체를 추가합니다. – Jay