变量类型的可枚举对象
本文关键字:枚举 对象 类型 变量 | 更新日期: 2023-09-27 18:08:35
在下面的例子中,我有一个名为GetList的方法,它接受一个字符串参数并返回一个List实体。我在一个通用的IEnumerable变量中捕获它,因为在运行时我不知道用户可能想要什么实体。如何使用实际类型而不是对象?
我想换掉这个…
IEnumerable<object> data = GetList(entityName);
与这个… IEnumerable<Company> data = GetList(entityName);
我现在唯一能想到的处理它的方法我不打算这样做,因为我们有300多个实体就是像
这样的东西switch(entitName)
{
case "Company":
IEnumerable<Company> data = GetList(entityName);
break;
case "Employee":
IEnumerable<Employee> data = GetList(entityName);
break;
...
}
你不能在编译过的代码中使用这种类型——所以没有办法在没有反射的情况下创建它。
最接近你想要的是IEnumerable<dynamic>
,所以你可以根据对象的运行时类型访问属性。
如果你只是需要创建强类型的enumerable来返回到其他一些期望比IEnumerable<object>
更好的代码中,你可以使用反射来创建这样的类型(create generic List
你也可以有泛型函数访问结果在强类型的方式,但不是调用它直接调用它通过反射后使用MakeGenericMethod
正确的类型(我如何使用反射调用泛型方法?)。
您可以使GetList()
通用:
IEnumerable<Company> data = GetList<Company>(entityName);
IEnumerable<T> GetList<T>(string entityName)
{
List<T> list = new List<T>();
// Populate list here
return list;
}