gpt4 book ai didi

c# - T 之间的映射 --> IHandler

转载 作者:太空狗 更新时间:2023-10-29 20:00:10 25 4
gpt4 key购买 nike

我有如下界面

public interface IHandler<T>
{
void Handle(T myObject);
}

我想要一个 HandlersManager class with 持有对象类型与其相应处理程序之间的映射,但我不确定我应该如何定义持有此映射的对象。

例如,我想要的是:

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)];
}

没有任何其他方法可以使用泛型。

Is there a better solution or something that I have completely missed?

不,但是管理器类通常是代码味道。小心。

关于c# - T 之间的映射 --> IHandler<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9992159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com