我只是怀疑这个小界面。
我有以下界面,这是用于注册一些项目来映射每个模块中的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>();
}
这是其中一个模块的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;
}
}
正如我所说,我不相信这是一个好主意和表现。也许我应该只在映射字典的容器中注册一个实例,您怎么看?