我在类中创建一个类似的成员:
Dictionary<Type, Func<TContract, Task>> ProcessorDictionary = new Dictionary<Type, Func<TContract, Task>>();
在上面的词典中,我想维护特定类型与其相关处理器之间的绑定。我想强制执行一个约束,当你向这个字典添加一个条目时,TContract应该是&#34; Type&#34;的一个实例。例如:
Func<MessageContract,Task> func = ...
ProcessorDictionary.Add(typeof(MessageContract), func)
这可能吗?如果不是什么选择?
答案 0 :(得分:3)
用类似于通用约束的东西来实现它是不可能的。你能做的是&#34;隐藏&#34;泛型方法背后的字典(支持类型约束)。
只需要一个字典为私有的类,并公开一般的方法:
private Dictionary<Type, Func<TContract, Task>> _processorDictionary = new Dictionary<Type, Func<TContract, Task>>();
public void AddEntry<TContract>(Func<TContract, Task> func)
{
_processorDictionary[typeof(TContract)] = func;
}