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

时间:2011-06-12 14:38:04

标签: c# .net

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

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

修改 在一个函数中,我如何能够传递字符串“Clothing”并返回类的类型?

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

5 个答案:

答案 0 :(得分:5)

使用Type.GetType(string)

请注意,有时候课程名称不够。有时您需要提供AssemblyQualifiedName

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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;
} 

答案 3 :(得分:0)

您可以使用

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

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

答案 4 :(得分:0)

如果你想输入:

Type.GetType

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

Activator.CreateInstance

好运