创建一个名称在字符串变量中的类的对象实例

Dhw*_*ani 19 .net c# reflection runtime system.reflection

我不知道我问的问题是否可用,但我只是想知道它是否存在以及它是如何工作的.所以这是我的问题:

我有自己的2-3个自定义模型类.例如,客户,员工和产品.现在我在一个字符串中有类名.并且基于字符串中的类名,我必须创建其对象并返回到VIEW.我怎么能实现这个目标?

我知道一个IF ELSE声明选项,但我想尝试更好的" 动态 "方式......

Dis*_*ame 41

在string中使用类名不足以创建其实例.事实上,您将需要包含类名的完整命名空间来创建对象.

假设您有以下内容:

string className = "MyClass";
string namespaceName = "MyNamespace.MyInternalNamespace";
Run Code Online (Sandbox Code Playgroud)

与您相比,您可以MyNamespace.MyInternalNamespace.MyClass使用以下任一技术创建该类的实例,类的对象:

var myObj = Activator.CreateInstance(namespaceName, className);
Run Code Online (Sandbox Code Playgroud)

或这个:

var myObj = Activator.CreateInstance(Type.GetType(namespaceName + "." + className));
Run Code Online (Sandbox Code Playgroud)

希望这有帮助,如果没有,请告诉我.

  • 最后一段代码不应该读取:"var myObj = Activator.CreateInstance(Type.GetType(namespaceName +"."+ className));" (缺少点?) (4认同)

小智 9

    string frmName = "frmCustomer";
    //WorldCarUI. is the namespace of the form
    Type CAType = Type.GetType("WorldCarUI." + frmName );
    var myObj = Activator.CreateInstance(CAType);
    Form nextForm2 = (Form)myObj;
    nextForm2.Show();
Run Code Online (Sandbox Code Playgroud)

这确实有效..

关心Avi