C# 从字符串创建类的实例,然后使用它
我正在处理一个MVC项目,因此在我的控制器构造函数中,我正在调用一个类(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; 现在我在控制
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(类型)作为对象句柄
?