有没有办法将字符串转换为Type对象?

时间:2011-03-03 17:24:54

标签: c#

假设我有这个基本字符串......

string a = "Entity";

这个Type对象......

Type t;

有没有办法通过阅读a

使这个Type对象引用类型Entity

Exanple:如果a更改为Prop,则会创建一个引用Prop类型的Type对象。 t将等于typeof(Prop)

3 个答案:

答案 0 :(得分:6)

是。有一个静态的Type.GetType()方法,它接受一个字符串并返回一个Type对象,该对象表示具有字符串给出的名称的类型。

理解这将搜索所有引用的命名空间,并且有几个命名的类,例如“TextBox”(在WFA,WPF和ASP命名空间中)。因此,您必须完全限定类型名称才能使方法获得正确的类型。

答案 1 :(得分:3)

是的,您可以使用Type.GetType(string)

注意:

  

要获取的类型的程序集限定名称。请参阅AssemblyQualifiedName。如果类型在当前正在执行的程序集中或在Mscorlib.dll中,则提供由其名称空间限定的类型名称就足够了。

请注意链接的MSDN页面上的其他备注。

答案 2 :(得分:1)

这会为你创建一个类的实例,虽然你不能将它强制转换为指定的类型(除非你有一个基础对象,或者知道它实现了一个接口):

public class Testing
{
    private void Test()
    {
        var name = "A";

        var type = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.Name == name).FirstOrDefault();
        var obj = Activator.CreateInstance(type);
    }
}
private class A
{ 
}