C#强制类型转换为泛型强类型
我正在枚举我的EntityFramework容器属性。通过反思,我只获得DbSet
属性。现在我需要访问属性值,我想这样说:C#强制类型转换为泛型强类型
object obj = PropertyInfo.GetValue(myobject)
所有在这里,但我需要转换为它的实际类型(我非常需要这个):
DbSet<MyRealType> obj = (DbSet<MyRealType>)PropertyInfo.GetValue(myobject);
但MyRealType
在编译时是未知的。我只得到Type
,但我可以将它投射到 DbSet<MyrealType>
。这有可能实现吗?
回答:
不,这将是不可能的。你试图做的是将运行时类型转换为编译时类型,许多程序员尝试并且未能这样做。此时你的选择主要涉及用反射来检查类型,并试图通过反射来调用那个人的方法和属性。
您的其他选项是将值转换为dynamic
,然后尝试(并希望)您的调用按预期工作。在您的情况
所以,你最好的选择将是可能使用动态类型:
dynamic obj = Propertyinfo.GetValue(myobject); obj.SomeMethodYouWantToCall(); // and catch DLR errors
以上是 C#强制类型转换为泛型强类型 的全部内容, 来源链接: utcz.com/qa/267061.html