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

回到顶部