Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从字符串创建类的实例,然后使用它_C#_Asp.net Mvc_Class - Fatal编程技术网

C# 从字符串创建类的实例,然后使用它

C# 从字符串创建类的实例,然后使用它,c#,asp.net-mvc,class,C#,Asp.net Mvc,Class,我正在处理一个MVC项目,因此在我的控制器构造函数中,我正在调用一个类(GetServiceName),该类将服务名称返回为string(服务是另一个类,其中所有方法都由控制器调用) 一个选项是我的类GetServiceName返回服务名,然后我初始化它(不知道如何做) 在我的GetServiceName类中,我正在做类似的事情 ObjectHandle oh; oh = Activator.CreateInstance(null, ClassName); return oh; 现在我在控制

我正在处理一个MVC项目,因此在我的控制器构造函数中,我正在调用一个类(
GetServiceName
),该类将服务名称返回为
string
(服务是另一个类,其中所有方法都由控制器调用)

  • 一个选项是我的类
    GetServiceName
    返回服务名,然后我初始化它(不知道如何做)

  • 在我的
    GetServiceName
    类中,我正在做类似的事情

    ObjectHandle oh;
    oh = Activator.CreateInstance(null, ClassName);
    return oh;
    
  • 现在我在控制器中得到
    oh
    作为对象,但是如何在控制器中初始化它-

    oh_name=new oh()

    (其中,
    oh
    是GetServiceName类返回的ObjectHandle)

    并且应该能够使用
    \u name
    作为
    \u name.getName(id)
    ,其中getName是方法名,name是各自的服务


    我知道与此相关的stackoverflow有很多问题,但我无法使用其中任何一个使我的代码正常工作

    创建类实例后,您应该从句柄中检索对象本身:

    ObjectHandle oh = Activator.CreateInstance(null, "typeName");
    object instance = oh.Unwrap();
    

    Activator.CreateInstance
    是正确的,但我不确定我是否正确地遵循了代码。您需要正确铸造对象——这就是问题所在吗?
    oh\u name=(oh)Activator.CreateInstance(null,ClassName)听起来你在做的是一个工厂模式。这听起来像是某种依赖项解析。@sriram:your给出了一个错误
    找不到类型或命名空间名称“oh”(是否缺少using指令或程序集引用?
    是否尝试过
    var type=type.GetType(ClassName);oh=Activator.CreateInstance(类型)作为对象句柄