在静态变量中获取泛型类的类名

时间:2013-07-10 13:15:28

标签: c#-4.0

我有一个泛型类,我将从中派生出大约20个不同的类,每个类都有一个不同的通用部分数据类型。 Generic类将有一个名为ConfigField的静态字段,用于标识配置文件中的字段。我想通过使用派生类的名称加上它包装的通用数据类型的名称来计算此字段。所以,例如:

class BaseClass<T>
{
    static string ConfigField = string.format("{0}.{1}", ???, ???);
}
class DerivedInt: BaseClass<int>{}
class DerivedLong: BaseClass<long>{}
class DerivedString: BaseClass<string>{}
...
Console.WriteLn(DerivedString.ConfigField);

结果应该导致“DerivedString.string”。 或者这是不可能的,因为它是一个静态字段,因此它只存在于Generic基类中?如果是这样,还有其他任何解决方案吗?

1 个答案:

答案 0 :(得分:2)

试一试:

class Program
{
    static void Main(string[] args)
    {
        Derived d = new Derived();

        Console.WriteLine(d.ConfigField); // Derived.String

        Console.ReadLine();
    }
}

abstract class Base<T>
{
    public string ConfigField { get; private set; }

    public Base()
    {
        ConfigField = string.Format("{0}.{1}", this.GetType().Name, this.GetType().BaseType.GenericTypeArguments[0].Name);
    }

}

class Derived : Base<string>
{

}