【发布时间】:2014-09-11 15:38:24
【问题描述】:
我正在尝试使用从字符串定义的类型创建对象的实例。
这是我完成的代码(注意我在 wcf 网络服务中):
namespace CreeContact.WebServices
{
public class BaseObject
{
}
public class test : BaseObject
{
public string name;
public test()
{
name = "Default";
}
}
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Object
{
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json)]
public void createobject(string classname, string idobjectsession)
{
***ERROR HERE (Value cannot be null. Type.GetType(classname) return null) ----- > *** BaseObject objecttocreate = (BaseObject)Activator.CreateInstance(Type.GetType(classname));
HttpContext.Current.Session[idobjectsession] = objecttocreate;
}
}
}
所以当我使用参数“test”(我想要创建实例的类的名称)调用(从 javascript)我的 web 服务方法“CreateObject”时,Type.GetType(classname) 总是返回 null...
我被困在这里,我不确定这是否是实现我的目标的好方法:创建一个由字符串定义的类型的类的实例
错误消息:值不能为空。 参数名称:类型
【问题讨论】:
-
在方法中放置一个 try/catch 并发布确切的异常/内部异常被抛出。您还必须对类名使用字符串类型吗?为什么不直接传递一个类型呢