我在项目 A 中的 App.xaml.cs 中几乎没有公共属性,我想在我的项目 B 中引用它们。但是我的项目 A 有对项目 B 的引用,所以我不能再次添加项目 A 的引用project B 否则会导致循环错误。那么如何在我的类库中引用这些属性呢?我不想使用反射。
作为一种解决方法,我将这些属性存储在项目 B 的一个类中(因此它可以在项目 A 和项目 B 中引用)并将这些属性设为静态并且一切正常。但是我仍然很想知道如果我将它们存储在 App.xaml.cs 中会怎么样?有没有可用的选项?
App 类应该公开仅 与应用程序项目相关的内容。一旦你意识到你想要在 B.dll 中访问这些东西,它们就不仅仅与应用程序项目相关,因此不再属于应用程序项目。
向 B.dll 添加一个类,将这些东西作为静态属性携带可能是一种合理的方法。另一种常见的模式是有一个单一的
Current
静态属性。
public MyClass
{
private static MyClass _current = new MyClass();
public static MyClass Current { get { return _current; } }
public string SomeInstanceValue { get; set; }
}
A 和 B 都将使用模式
var x = MyClass.Current.SomeInstanceValue
访问事物。这种方法的优点是它允许 Current
属性获取器确定“当前”实例是否可用。
您可能还想查看有关 ApplicationLifeTimeObjects 的文档。
当A和B都需要一些东西时,也许你应该把它们放在一个C项目中(C在Common中)然后从A和B中引用C。