gpt4 book ai didi

c# - C#中如何判断集合中对象的类型

转载 作者:行者123 更新时间:2023-11-30 22:44:11 24 4
gpt4 key购买 nike

我试图在 C# 中使用反射来确定运行时集合属性中对象的类型。这些对象是由 Entity Framework 生成的实体:

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.
}
}

如何识别集合所持有对象的类型?

编辑:更新上面的代码,添加第一个 .IsGenericType 查询以使其工作

最佳答案

您可以使用 GetGenericArguments()检索集合类型的通用参数(例如,对于 EntityCollection<string> ,通用参数是 string )。自 EntityCollection<>总是有一个通用参数,GetGenericArguments()将始终返回一个单元素数组,因此您可以安全地检索该数组的第一个元素:

if (pi.PropertyType.IsGeneric &&
pi.PropertyType.GetGenericTypeDefinition() == typeof(EntityCollection<>))
{
// This is now safe
var elementType = pi.PropertyType.GetGenericArguments()[0];

// ...
}

关于c# - C#中如何判断集合中对象的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3538426/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com