C# 有没有办法将字符串转换为类型对象?

C# 有没有办法将字符串转换为类型对象?,c#,C#,假设我有这个基本字符串 string a = "Entity"; 这种类型的对象 Type t; 有没有办法通过读取a,使此类型对象引用类型实体 示例:如果a更改为Prop,它将创建一个引用Prop类型的类型对象t将等于typeof(Prop)是。有一个static Type.GetType()方法,该方法接受一个字符串并返回一个类型对象,该对象用字符串给定的名称表示该类型 请理解,这将搜索所有引用的名称空间,并且有几个名为“TextBox”的类(在WFA、WPF和ASP名称空间中)。因此,

假设我有这个基本字符串

string a = "Entity";
这种类型的对象

Type t;
有没有办法通过读取
a
,使此类型对象引用类型实体


示例:如果
a
更改为
Prop
,它将创建一个引用
Prop
类型的类型对象
t
将等于
typeof(Prop)

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


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

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

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

是的,您可以使用

注:

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

请注意链接MSDN页面上的附加备注。

是的,您可以使用

注:

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


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

这将为您创建类的实例,尽管您无法将其强制转换为指定的类型(除非您有一个基本对象,或者知道它实现了一个接口):


这将为您创建类的实例,尽管您无法将其强制转换为指定的类型(除非您有一个基对象,或者知道它实现了一个接口):


我对你的问题有点困惑,但你在找什么?或者我对你的问题有点困惑,但这是你想要的吗?或者谢谢,那正是我想要的!除非
TextBox
位于“全局命名空间”(即
typeof(TextBox).namespace==null
)中,否则调用
Type.GetType(“TextBox”)
将找不到任何内容。与
Type.GetType(“字符串”)
相同。必须始终至少提供完整的命名空间。如果类型既不在当前执行的程序集中,也不在
mscorlib.dll
中,则必须使用程序集名称/版本/区域性/公钥标记进一步限定。因此,例如调用
Type.GetType(“System.Uri”)
将找不到。谢谢,这正是我要找的!除非
TextBox
位于“全局命名空间”(即
typeof(TextBox).namespace==null
)中,否则调用
Type.GetType(“TextBox”)
将找不到任何内容。与
Type.GetType(“字符串”)
相同。必须始终至少提供完整的命名空间。如果类型既不在当前执行的程序集中,也不在
mscorlib.dll
中,则必须使用程序集名称/版本/区域性/公钥标记进一步限定。因此,例如调用
Type.GetType(“System.Uri”)
将找不到。
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
{ 
}