0

プロパティのインポートに必要なラムダ式はやや混乱していると思います。また、インポートとエクスポートに MEF 規則を使用する方法も理解しようとしているため、一度に多くのことを引き受けようとしている可能性があります。

ResourceDictionary以前にインポートしたコントラクト名を次のようにエクスポートしています。

[ImportMany("ApplicationResources", typeof(ResourceDictionary))]
public IEnumerable<ResourceDictionary> Views { get; set; }

これはうまく機能し、問題ありませんが、これを 経由でインポートしようとしてRegistrationBuilderいますが、これを行う方法を完全には理解していません。

これは私が信じているものをエクスポートします(ただし、正直に言うと、構文を完全には理解していません):

var registration = new RegistrationBuilder();
registration.ForTypesDerivedFrom<ResourceDictionary>()
    .Export<ResourceDictionary>(x => x.AsContractName("ApplicationResources"));

App設定したいプロパティがあります

これを試してみました(アプリ内で実行)

registration.ForType<App>()
    .ImportProperty<ResourceDictionary>(x => x.Views);

しかし、これは機能していません。どうにかしてコントラクト名を設定する必要があると思いますか? 誰かがこれの構文を教えてもらえますか? 正しい構文を見ることができれば、それがどのように機能するかをよりよく理解できるかもしれません...願っています!

4

1 に答える 1

1

通常、質問を投稿した後に解決策を見つけたことがわかりました。私は自分の質問に答える傾向はありませんが、しばらくの間固執していたので、他の誰かを助ける場合に備えて、これが機能します:

registration.ForType<App>()
    .ImportProperty<ResourceDictionary>(x => x.Views, ib => ib.AsContractName("ApplicationResources"));

ただし、これは、少し混乱しているSafisfyImportsOnceのではなく、使用した場合にのみ機能しますComposeParts

于 2013-04-16T10:48:28.327 に答える