开发者

Instantiate a class at runtime through reflection

开发者 https://www.devze.com 2023-02-17 16:04 出处:网络
Hello I am trying to discover and instantiate a class at run time. The Assembly is loaded i开发者_运维技巧n factory object.

Hello I am trying to discover and instantiate a class at run time. The Assembly is loaded i开发者_运维技巧n factory object.

It works fine till this point

Object obj = Activator.CreateInstance(
   (factory.ProxyAssembly.GetType("tempuri.org.Authorizations")));

but I can not get property name with obj as Obj.FirstName or obj.LastName is not available so I am trying to typecast it to a proper underlying class.

But the below given code does not work.

 factory.ProxyAssembly.GetType("tempuri.org.Authorizations")
     .UnderlyingSystemType.BaseType a = 
         Activator.CreateInstance(factory.ProxyAssembly
              .GetType("tempuri.org.Authorizations").UnderlyingSystemType);

Any help is appreciated.


You cannot cast, you don't have the assembly added as a reference in your project. You need to use Reflection to get the object properties. Use Type.GetProperty and PropertyInfo.GetValue. Note how the C# version 4 dynamic keyword can lessen the syntax pain considerably, recommended.


tempuri.org.Authorizations a =  (tempuri.org.Authorizations)Activator.CreateInstance(factory.ProxyAssembly.GetType("tempuri.or g.Authorizations");

Look into casting with (Type). Where Type is class type that comes back. Type is a compile time thing in that case. Reflection uses abstractions to shield the concrete type, but in that case you would need it. Unless you use do:

a.getClass().getField("FirstName").getString(a);


You need to cast the object after instantiating it.

0

精彩评论

暂无评论...
验证码 换一张
取 消