使用Reflections从基类强制转换为派生类

时间:2012-03-30 23:50:12

标签: c# reflection assemblies

这就是我要做的事情:

BaseClass base = (BaseClass)
AppDomain.CurrentDomain.CreateInstance("DerivedClassDLL","DerivedClass");

但是,我需要从DerivedClass到达显示等属性.BaseClass没有该属性,我无法实现。

所以不知怎的,我需要将它强制转换为DerivedClass才能达到它但是没有引用DerivedClass所以我无法达到它的类型很容易不像BaseClass那样有参考所以我可以使用它。

我该如何做到这一点?

2 个答案:

答案 0 :(得分:3)

在这种情况下,你基本上有两种选择:

  • 使用动态
  • 使用反射

使用动态

BaseClass foo = (BaseClass) AppDomain.CurrentDomain
                                     .CreateInstance("DerivedClassDLL","DerivedClass");
dynamic derived = foo;
string someProperty = derived.SomeProperty;

使用反射

string someProperty = (string)foo.GetType()
                                 .GetProperty("SomeProperty")
                                 .GetValue(foo, null);

答案 1 :(得分:0)

由于你有一个派生类的实例,这一点反射应该这样做:

var myPropertyInfo = typeof(instanceOfDerivedClass).GetProperty("DerivedClassProperty");
var myPropertyValue = myPropertyInfo.GetValue(instanceOfDerivedClass) as [property type];