如何在我的 Silverlight 类库中编写 (Application.Current as App)?

问题描述 投票:0回答:2

我在项目 A 中的 App.xaml.cs 中几乎没有公共属性,我想在我的项目 B 中引用它们。但是我的项目 A 有对项目 B 的引用,所以我不能再次添加项目 A 的引用project B 否则会导致循环错误。那么如何在我的类库中引用这些属性呢?我不想使用反射。

作为一种解决方法,我将这些属性存储在项目 B 的一个类中(因此它可以在项目 A 和项目 B 中引用)并将这些属性设为静态并且一切正常。但是我仍然很想知道如果我将它们存储在 App.xaml.cs 中会怎么样?有没有可用的选项?

silverlight silverlight-4.0 silverlight-3.0 silverlight-2.0
2个回答
1
投票

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 的文档。


1
投票

当A和B都需要一些东西时,也许你应该把它们放在一个C项目中(C在Common中)然后从A和B中引用C。

© www.soinside.com 2019 - 2024. All rights reserved.