在项目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()
以及我想使用的任何其他类中,但这对其他程序集中定义的类不起作用。
答案 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初始化类型的正确位置将是此类的静态构造函数。