0

我参考了http://pwlodek.blogspot.in/2010/12/introduction-to-interceptingcatalog.html

这是一个很好的例子,但我在使用这段代码时有点困惑。我正在创建一个 WPF + Prism + MEF 应用程序,我正在定义所有依赖项,就像它在“Stock Trader RI”示例中定义的那样,根据 Stock Trader RI 我正在将所有模块初始化为 MyBootstrapper 类。在我的项目中,我需要支持 Open Generic,就像上面的链接示例中提供的那样。现在我的问题是我在哪里实现示例代码,我正在尝试将它实现到 MyBootstrapper ConfigureAggregateCatalog() 方法中

[CLSCompliant(false)]
public partial class ImsBootstrapper : MefBootstrapper
{
      protected override void ConfigureAggregateCatalog()
      {

          this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof (ImsBootstrapper).Assembly));

          this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof (ImsCommands).Assembly));

          this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof (DalModel).Assembly));

          this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof (TestClass).Assembly));

          this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof (TestClassImp).Assembly));



          // Create source catalog
          var typeCatalog = new TypeCatalog((typeof(RegistrationViewModel)));

          // Create catalog which supports open-generics, pass in the registry
          var genericCatalog = new GenericCatalog(new MyGenericContractRegistry());

          // Aggregate both catalogs
          var aggregateCatalog = new AggregateCatalog(typeCatalog, genericCatalog);

          // Create the container
          //var container = new CompositionContainer(aggregateCatalog);
          this.Container = new CompositionContainer(aggregateCatalog); 

          this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(StudentModel).Assembly));

      }

但它不起作用,请指导我在哪里使用上面链接中给出的示例以获得开放通用(开放通用公共类存储库示例:IRepository)支持

  1. 在引导程序中
  2. 或者有些是别的

如果您仍然对我的问题感到困惑,请给我一个示例如何在“Stock Trader RI”演示应用程序中使用“MefContrib”为棱镜获得 OpenGeneric 支持我试图通过以下链接中给出的示例来实现这一点http:/ /pwlodek.blogspot.in/2010/12/introduction-to-interceptingcatalog.html但很困惑在 MyBootstrapper 或其他地方调用此代码 Wather 的位置。

4

1 回答 1

1

您可以简单地使用 .NET 4.5。在该版本中,对开放泛型的支持已经是 MEF 的一部分,您不需要做任何特别的事情。请参阅.NET Framework 4.5 中的新增功能

.NET 4.5 尚未发布,但候选发布版已在“上线”许可下可用。这意味着您可能已经在生产中使用它。

编辑:如果您不能使用 .NET 4.5,您仍然可以从mef.codeplex.com下载并使用最新的 MEF2 预览。例如,MEF2 Preview 5支持开放泛型并将在 .NET4 上运行。

于 2012-06-11T10:11:08.370 回答