创建一个由string定义的类型的对象

时间:2014-09-11 15:38:25

标签: c# asp.net .net wcf

我正在尝试使用从字符串定义的类型创建对象的实例。

这是我所做的代码(注意我在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

1 个答案:

答案 0 :(得分:0)

类类型需要是" Full.CLASSName"甚至更好" Full.CLASSName,Assembly"动态创建类。对于前者,我认为类型需要在同一个组件中。因此JS可能会传递一些内容,但您必须确保该类型与.NET期望的类型名称匹配。