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

时间:2011-05-12 17:36:41

标签: silverlight silverlight-4.0 silverlight-3.0 silverlight-2.0

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

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

提前致谢:)

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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上的文档。