【问题标题】:How can I write (Application.Current as App) in my Silverlight class library?如何在我的 Silverlight 类库中编写 (Application.Current as App)?
【发布时间】:2011-05-12 17:36:41
【问题描述】:

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

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

提前致谢:)

【问题讨论】:

  • 这不是答案,而是托管其他 2 个的第三个库 :-)

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


【解决方案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 上的文档。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 2011-05-18
      • 1970-01-01
      相关资源
      最近更新 更多