C# – 如何根据字符串返回Type

例如,我有一个名为Clothing的类,它inheritance自Product的抽象类。

public class Clothing : Product { public bool IsInSeason {get; set;} public string Material {get; set; } public Decimal IsFeatured { get; set; } } 

编辑:在一个函数中,我如何能够传递字符串“服装”并返回类的类型?

 ReturnTypeOfClassBasedOffOfString(string class) { // ... } 

使用Type.GetType(string)

请注意,有时候类名称是不够的。 有时您需要提供AssemblyQualifiedName

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

你可以使用Type.GetType ,但是:你想要实现什么? 我敢打赌你需要更简单的东西。 为什么我们需要Clothing课?

BTW: ReturnTypeOfClassBasedOffOfString(string class)无法编译。 您需要ReturnTypeOfClassBasedOffOfString(string classname)ReturnTypeOfClassBasedOffOfString(string @class)

 static Type ReturnTypeOfClassBasedOffOfString(string className) { foreach (Assembly a in AppDomain.Current.GetAssemblies ()) { foreach (Type t in a.GetTypes ()) { if (t.Name == className) // Ignore namespace return t; } } return null; } 

您可以使用

 Type.GetType("MyApplication.Product", true) 

为此,您必须包含命名空间(例如,“MyApplication”)。

如果你想获得类型:

 Type.GetType 

就足够了。如果你想使用它的字符串名称来创建实例,你应该使用它

 Activator.CreateInstance 

祝好运