您好我正在尝试在运行时发现并实例化一个类。装配体加载到工厂对象中。
到目前为止一切正常
Object obj = Activator.CreateInstance(
(factory.ProxyAssembly.GetType("tempuri.org.Authorizations")));
但我无法使用obj
获取属性名称Obj.FirstName
或obj.LastName
不可用,因此我尝试将其类型化为正确的基础类。
但是下面给出的代码不起作用。
factory.ProxyAssembly.GetType("tempuri.org.Authorizations")
.UnderlyingSystemType.BaseType a =
Activator.CreateInstance(factory.ProxyAssembly
.GetType("tempuri.org.Authorizations").UnderlyingSystemType);
感谢任何帮助。
答案 0 :(得分:1)
tempuri.org.Authorizations a = (tempuri.org.Authorizations)Activator.CreateInstance(factory.ProxyAssembly.GetType("tempuri.or g.Authorizations");
使用(类型)查看转换。其中类型是返回的类类型。在这种情况下,Type是编译时的事情。 Reflection使用抽象来屏蔽具体类型,但在这种情况下你需要它。除非你使用do:
a.getClass().getField("FirstName").getString(a);
答案 1 :(得分:1)
您无法强制转换,您没有在项目中添加程序集作为参考。您需要使用Reflection来获取对象属性。使用Type.GetProperty和PropertyInfo.GetValue。请注意C#版本4 动态关键字如何能够大大减轻语法上的痛苦,建议使用。
答案 2 :(得分:0)
您需要在实例化之后强制转换对象。