如何将数据全局添加到另一个dll中的静态类

时间:2010-08-31 11:27:54

标签: c#

在项目A中,我有一个静态类,用于存储特定类型的数据,这些数据在静态构造函数中初始化

public static class MyStaticClass
{
    private static readonly Dictionary<Type, object> data = new Dictionary<Type, object>();

    static MyStaticClass() { /*fill data here*/ }

    public static object GetData(Type type) { return data[type]; }

    public static void SetData(Type type, object o) { data[type] = o; }
}

项目B使用项目A.项目B也是一个库。 在项目B中,我想要将此类不仅用于静态构造函数中添加的类型,还要用于B及其依赖项中定义的类型。

基本上在B的某个地方我想拥有以下代码:

MyStaticClass.SetData(typeof(TypeInB), new object());
MyStaticClass.SetData(typeof(TypeInDllUsedByB), new object());

将此代码放在项目B中的适当位置是什么? 我预测B有几个地方我想调用GetData,而不必担心以前的代码是否已被执行。

我考虑将它放在static TypeInB()以及我想使用的任何其他类中,但这对其他程序集中定义的类不起作用。

1 个答案:

答案 0 :(得分:2)

在项目B中创建包装类,该类将调用项目A中对存储库的调用。例如,

public static class MyStaticClassInB
{

    static MyStaticClassInB() { /*fill data here*/ }

    public static object GetData(Type type) { return MyStaticClass.GetData(type); }

    public static void SetData(Type type, object o) { MyStaticClass.SetData(type, o); }
}

始终在项目B中使用MyStaticClassInB(而不是MyStaticClass)。现在,从B初始化类型的正确位置将是此类的静态构造函数。