Creating an instance from a class name

2019-07-10 15:53发布

I'm trying to create an instance of a class at run time. The classes I'm trying to create all inherit from a base class, ConfigMgrObj, and are named ConfigMgr_xxxxxx e.g. ConfigMgr_Collection. They all take a special object that I'm calling oController and a string as arguments.

This is the line I'm using to do it, where ClassToGet is a string that contains the name of the class e.g. ConfigMgr_Collection.

object oNewObject = System.Activator.CreateInstance(null, "StackOverflowNamespace." + ClassToGet, new object[] { oController, ClassToGet });

This throws a TypeLoadException exception. What's up with it?

标签: c# reflection
2条回答
贼婆χ
2楼-- · 2019-07-10 16:19

Are the types you're trying to instantiate actually declared within the same assembly? Passing null as the first parameter is telling Activator that the types live in the current assembly.

查看更多
家丑人穷心不美
3楼-- · 2019-07-10 16:40

Looks like it did not find the the class named "StackOverflowNamespace."+ClassToGet in the current assembly.

查看更多
登录 后发表回答