我正在扩展一个第 3 方应用程序,它使用看起来像 PRISM 的早期版本来提供可组合性。
我制作了一个视图的原型,它非常简单。为了让我的 UI 插入到第 3 方 UI 中,我的 UserControl 必须实现一个特定的接口(如 IThirdPartyView)。
这很好。但是......现在我想以更生产的方式实现代码。一个关键点是我编写的 UserControls 需要不受污染,所以不要直接依赖于 3rd Party 的东西。如果我们切换到另一个第 3 方,我们不希望在代码中对另一个有依赖关系。
作为 OO 背景,我认为解决方案很简单:将我的 UI 放在一个不依赖于任何第 3 方的单独程序集中。我们称之为 CleanUserControl。然后在第 3 方特定实现中,扩展 CleanUserControl 类,并让该扩展类实现第 3 方特定接口以及扩展我的 CleanUserControl 类,因此类声明类似于:
public class SpecificUserControl : CleanUserControl, IThirdPartyView
{
// Implementation of IThirdPartyView
}
但是...在实践中,我无法实现这一目标。
我设法让它编译,然后在运行时点击它:
组件“CustomerProfile.ThirdParty.View.SecurityView2”没有 由 URI '/CustomerProfile;component/view/securityview.xaml' 标识的资源
实际上,我认为我希望我的扩展只实现背后的代码并从父级继承 xaml,但我不知道这是否可以做到。
我希望我的问题很清楚,我很难解释!