我正在尝试使用从字符串定义的类型创建对象的实例。
这是我所做的代码(注意我在wcf webservice中):
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;
}
}
}
所以当我调用(来自javascript)我的webservice方法" CreateObject"使用参数" test" (我要创建实例的类的名称),Type.GetType(classname)
总是返回null ...
我被困在这里,我不确定这是否是实现我的目标的好方法:创建一个具有由字符串定义的类型的类的实例
错误消息:值不能为空。 参数名称:type
答案 0 :(得分:0)
类类型需要是" Full.CLASSName"甚至更好" Full.CLASSName,Assembly"动态创建类。对于前者,我认为类型需要在同一个组件中。因此JS可能会传递一些内容,但您必须确保该类型与.NET期望的类型名称匹配。