3

.NET 4.5(CompositionInitializerクラスの宣言が含まれている)にSystem.ComponentModel.Composition.Initialization.dllが見つかりません。このアセンブリは.NET4.5のMEFから削除されましたか?[エクスポート]属性と[インポート]属性でマークされたアプリケーションの一部を作成するにはどうすればよいですか?

私がこの見解を持っているとしましょう:

    internal partial class StartWindow : Window
    {
        public StartWindow()
        {
            InitializeComponent();
            DataContext = ViewModel;
        }

        [Import]
        public IStartWindowViewModel ViewModel { get; set; }
    }

および適切なViewModel:

    [Export]
    internal class StartWindowViewModel : IStartWindowViewModel
    {
        public IEnumerable<Customer> Customers { get; set; }
    }

これらのパーツを構成するには、シェル(または他の場所)に何を追加する必要がありますか?

4

2 に答える 2

5

および同様のCompositionInitializerクラスはSilverlightに存在しますが、完全な.NETFrameworkには存在しません。MEFチームは、彼らが適切でないと感じたため、意図的にそれらを除外することを決定しました。

論理は、代わりに建設注入を使用する必要があるというものでした。

そうは言っても、クラスを使用するためにSilverlightで適用されたロジックは、WPFでもまったく同じように適用されます。私はこれについて.NET4でブログを書き、完全なフレームワークで機能する実装を含めました。

于 2013-01-31T19:21:40.467 に答える
1

あなたは初期構成を失いました、fe

    _container = new CompositionContainer(catalog);

    //Fill the imports of this object
    try
    {
        this._container.ComposeParts(this);
    }
    catch (CompositionException compositionException)
    {
        Console.WriteLine(compositionException.ToString());
    }

msdn

于 2013-01-31T19:28:51.800 に答える