1
別々のインスタンスを作成していないインスタンス化'p'の最終的な値の標準的なイニシャライザーを使用しても問題ありません。MEF Container.GetExportedValue <T>()私はContainer.GetExportedValueを使用して、すべてのインスタンスが値にそのプロパティを設定したプロパティを初期化するとき、私は私のカタログ</p> <p>からインスタンスにビューモデルをしようとしています
ので、私の例ではMEFインスタンス化例でFormViewModelのNameプロパティは、これらの値
C C C
を有するが、正常なインスタンスの例では、これらの値
B Cを有しています
MEFコンテナからのすべてのインスタンス間に共有参照があるように動作しています。私は
を助けるために誰かのために、ここでの十分な情報があると思います、ここで var worker = new BackgroundWorker();
worker.DoWork += (o, ea) =>
{
_forms = new ObservableCollection<FormViewModel>(
FormsExplorerRepository.GetForms()
.Select(p =>
{
// This way of instancing does strange stuff
var fvm = Container.GetExportedValue<FormViewModel>();
// This is fine but of course I'm not getting the importing constructor called
var fvm = new FormViewModel();
fvm.Workspace = this;
fvm.FormId = p.FormId;
fvm.Label = p.Label;
fvm.Name = p.Name;
fvm.Disclaimer = p.Disclaimer;
fvm.CertificationText = p.CertificationText;
fvm.Schemes = FormViewModelExtensions.InitialiseSchemes(p);
return fvm;
})
.ToList());
};
は、ビューモデルのコンストラクタ
public FormViewModel()
: base(null, true)
{
}
[ImportingConstructor]
public FormViewModel(
IDialogManager dialogs,
IEventAggregator events)
: base(null, true)
{
_events = events;
_events.Subscribe(this);
_dialogs = dialogs;
}
であり、私はクラス定義
[Export(typeof(FormViewModel)), PartCreationPolicy(CreationPolicy.NonShared)]
public class FormViewModel
のエクスポート属性を持っています