获取基本静态方法中的派生类属性-RIDDLE! :)

| 我想详细说明我正在从事的当前项目,但是那会很长。取而代之的是,我只会发布一个编程难题,它基本上解释了我要完成的工作。 :)
abstract class A
{
    // key = Derived Class name, value = list of properties the derive class exposes.
    private static Dictionary<string, List<string>> _DerivedPropertyNames;

    static A()
    {
        InitializeDerivedPropertyNames();
    }

    private static void InitializeDerivedPropertyNames()
    {
        //...???...
    }
}
难题是如何创建一个抽象基类,该基类将保存其所有派生类属性的静态缓存? 注意,这样做的目的是避免按名称加载程序集。     
已邀请:
如果可以等待子类型的实例被实例化,则可以使用A \的常规构造函数注册实现类:
public A()
{
    Type childType = GetType();
    string className = childType.Name;
    if (!_DerivedPropertyNames.ContainsKey(className)) {
         // add properties for this class
    }
}
在任何实例化之前,如果不在子类中添加逻辑(我想您不希望这样做),您将很难在静态构造函数中完成工作。原因是当调用A \的静态构造函数时,您将无法强制执行所有包含实现A的类型的程序集。     
在基类中没有简单(有效)的方法可以做到这一点。 只需在每个派生类中实现一个静态构造函数,然后使用它来注册属性。 还可以查看WPF Fx中的Dependency属性,以进行比较。     

要回复问题请先登录注册