我有以下界面
public interface IHandler<T>
{
void Handle(T myObject);
}
我想要一个HandlersManager
类保存了对象类型与其相应处理程序之间的映射,但我不确定应该如何定义保存此映射的对象。
例如,我想要的是这样的:
typeof(string) --> instance of IHandler<string>
typeof(MyClass) --> instance of IHandler<MyClass>
到目前为止我得到的最好的事情就是定义Dictionary<Type, object>
用于映射,但在这种情况下,我必须将值转换为IHandler<T>
每次我得到它。
有更好的解决方案还是我完全错过的东西?
我怀疑您正在使用它来解决依赖关系。相反,请使用专用容器来为您处理这些问题。
如果你不想这样做,你想要这样的东西:
Dictionary<Type, object> dictionary;
IHandler<T> Resolve<T>() {
return (IHandler<T>)dictionary[typeof(T)];
}
对于泛型没有任何其他方法。
有更好的解决方案还是我完全错过的东西?
不,但是管理器类通常是代码味道。当心。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)