私はこの小さなインターフェースに疑問を持っています。
私は次のインターフェースを持っています。これは、各モジュールでitemsViewModelをマップするためにいくつかのアイテムを登録するためのものです。したがって、各モジュールはいくつかのキーを登録します。
public interface IExerciseMap
{
Dictionary<Type, Func<BaseItem, BaseItemViewModel>> Maps { get; }
void AddExercise(Type type, Func<BaseItem, BaseItemViewModel> func);
}
public class ExerciseMap : IExerciseMap
{
public Dictionary<Type, Func<BaseItem, BaseItemViewModel>> maps;
public void AddExercise(Type type, Func<BaseItem,BaseItemViewModel> func)
{
maps.Add(type, func);
}
public Dictionary<Type, Func<BaseItem, BaseItemViewModel>> Maps
{
get
{
if (maps == null)
maps = new Dictionary<Type, Func<BaseItem, BaseItemViewModel>>();
return maps;
}
}
}
これまで辞書を実装してきましたが、これは最高のパフォーマンスではないと思いました。では、シナリオの説明を続けましょう。
私はそれを設定しました..
protected override void ConfigureContainer()
{
base.ConfigureContainer();
...
Container.RegisterType<IExerciseMap, ExerciseMap>();
}
これは、モジュールの 1 つからの ModuleInit の例です。
public ModuleInit(IUnityContainer container, IRegionManager regionManager,
IExerciseMap maps)
{
...
_maps = maps;
}
public void Initialize()
{
// Add types to the mapping (this is right, no changes)
_maps.Add(typeof(..), Func<...>);
_maps.Add(typeof(..), Func<...>);
...
}
ここでは、オブジェクトから値を渡しています (コンストラクターでのマッピング)。
public class WorksheetViewModel : NotificationObject
{
private readonly Dictionary<Type, Func<BaseItem, BaseItemViewModel>> maps;
public WorksheetViewModel(..., Dictionary<Type, Func<BaseItem, BaseItemViewModel>> maps)
{
...
this.maps = maps;
}
}
私が言ったように、私はこれが良いアイデアでありパフォーマンスであると確信していません. マッピング ディクショナリのコンテナにインスタンスを登録するだけでよいのではないでしょうか。