转换为类型T,其中我的字符串名称为T.

时间:2013-01-11 16:46:35

标签: c# reflection

  

可能重复:
  Create class instance in assembly from string name

使用Type MyClass的字符串表示形式我想从字符串表示形式创建MyClass的实例。

请参阅我的代码中的评论:

interface MyData
{
    string Value { get; }
}

class MyClass : MyData
{
    public MyClass(string s)
    {
        Value = s;
    }

    public string Value { get; private set; }

    public static explicit operator MyClass(string strRep)
    {
        return new MyClass(strRep);
    }

    public static implicit operator string(MyClass inst)
    {
        return inst.Value;
    }
}

class Program
{
    static void Main(string[] args)
    {
        MyClass inst = new MyClass("Hello World");

        string instStr = inst; //string representation of MyClass
        string instTypeStr = inst.GetType().FullName;

        // I want to be able to do this:
        MyData copyInst = (instTypeStr)instStr; // this would throw an error if instTypeStr did not inherit MyData

        // Then eventually:
        if (instTypeStr.Equals("MyClass"))
        {
            MyClass = (MyClass)copyInst;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您可以使用Activator.CreateInstance方法

链接:http://msdn.microsoft.com/fr-fr/library/d133hta4(v=vs.80).aspx

答案 1 :(得分:0)

您应该了解Serialization

要将类数据保持为字符串,您应该序列化您的MyClass对象为字符串。 要从字符串中检索类数据,您应该从字符串中反序列化您的MyClass对象。

XmlSerializer会帮助您