1

我有一个泛型类,我将从它派生大约 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”。或者这是不可能的,因为它是一个静态字段,因此它只存在于通用基类中?如果是这样,还有其他解决方案吗?

4

1 回答 1

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>
{

}
于 2013-07-10T13:58:41.887 回答