1

我正在使用 Silverlight 4 和 Prism 4 进行开发。

我也使用 Unity 作为我的注入容器。

我正在尝试从 xaml 创建模块目录,但我收到此错误“ IModuleCatalog 不包含 CreateFromXaml ... 的定义”。

我的代码片段是:

using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Practices.Prism.UnityExtensions;
using Microsoft.Practices.ServiceLocation;
using Microsoft.Practices.Prism.Modularity;
using Microsoft.Practices.Prism.MefExtensions;

namespace MyModularityProject {
    public class MyBootStrapper : UnityBootstrapper {
        protected override DependencyObject CreateShell() {
            return ServiceLocator.Current.GetInstance<Shell>();
        }

        protected override void InitializeShell() {
            base.InitializeShell();
            Application.Current.RootVisual = (UIElement)Shell;
        }

        protected override IModuleCatalog CreateModuleCatalog() {
            // This is the isntruction that doesn't compile
            return ModuleCatalog.CreateFromXaml(new 
                Uri("/MyProject.Silverlight;component/ModulesCatalog.xaml",
                    UriKind.Relative));
        }
    }
}

我在这里能错过什么?

4

1 回答 1

1

需要将完整路径添加到 ModuleCatalog 类型的原因是 UnityBootstrapper 继承的 Bootstrapper 基类中有一个 ModuleCatalog 属性。如果您不限定名称,则实际上是在返回 IModuleCatalog 的属性上调用访问器。接口定义不包含该函数。

于 2016-04-06T16:20:36.990 回答