これは、ここで話す私の全体的な.NETの経験不足だと思いますが、なぜこれが私に起こっているのか理解できません。
私のモデルImportMany
はISystemSetupEditorと呼ばれるインターフェースであり、この場合、Export
そのインターフェースとなるいくつかの部分があります。
アプリケーションのViewModelには、メニューを作成し、を繰り返してIEnumerable<ISystemSetupEditor>
メニュー項目を設定するメソッドがあります。次のようになります。
private ObservableCollection<WPFMenuItem> CreateSystemSetupItems()
{
ObservableCollection<WPFMenuItem> menu = new ObservableCollection<WPFMenuItem>();
foreach(ISystemSetupEditor editor in _model.SystemSetupEditors) {
WPFMenuItem menuitem = new WPFMenuItem( editor.GetName());
menuitem.Command = new RelayCommand( () => editor.ShowTool());
menu.Add( menuitem);
}
return menu;
}
問題は、メニュー項目をクリックすると、最後に列挙されたISystemSetupEditorから派生したオブジェクトのShowTool()が常に呼び出されることです。これは、同じ参照が各RelayCommandによって格納されているかのようです。
私は誰かができることを望んでいました:
- なぜこれが起こっているのかを説明するか、少なくともキーワードを教えてください。そうすれば、自分で調べて理解することができます。
- 考えられる解決策を提示します。これまでに思いついたのは、別の辞書を管理することだけです。ここで、T、Uは正しいライブラリに解決できるため、後で適切な関数を呼び出すことができます。