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));

      }

しかし、それは機能していませんが、私を案内していただけますか? 上記のリンクで与えられた例をどこで使用して、オープンジェネリック(Open Generic Public Class Repositoryの例: IRepository)サポートを取得しますか?

  1. BootStrapper で
  2. またはいくつかは他のものでした

私の質問についてまだ混乱している場合は、例を挙げてください 「Stock Trader RI」で OpenGeneric サポートを取得するにはどうすればよいですか デモアプリケーションは「MefContrib」を使用してプリズムに付属しています このリンクhttp:/ /pwlodek.blogspot.in/2010/12/introduction-to-interceptingcatalog.htmlしかし、このコードをどこで呼び出すべきか混乱しました。

4

1 に答える 1

1

単純に .NET 4.5 を使用できます。オープン ジェネリックのサポートは、そのバージョンの MEF に既に含まれているため、特別なことを行う必要はありません。.NET Framework 4.5 の新機能を参照してください。

.NET 4.5 はまだリリースされていませんが、リリース候補版は"go live" ライセンスの下で既に利用可能です。これは、すでに本番環境で使用している可能性があることを意味します。

編集: .NET 4.5 を使用できない場合でも、 mef.codeplex.com から最新の MEF2 プレビューをダウンロードして使用できます。たとえば、MEF2 Preview 5はオープン ジェネリックをサポートし、.NET4 で動作します。

于 2012-06-11T10:11:08.370 に答える