【发布时间】:2016-01-25 18:43:38
【问题描述】:
在 C# 中对泛型的接口类型进行约束有什么意义?例如,
public interface IHandler<in T>
where T : IProcessor
{
void Handle(T command);
}
直接继承 IProcessor 作为泛型没有任何约束不是更好吗?这样做有什么好处?
例如,
public class FooProcessor : IProcessor<T>
{
void Handle(T command)
{
}
}
【问题讨论】:
-
这是一个相当少见的用法。更常见的是看到类似
public class ProcessorHandler<in T> : IHandler<in T> where T : IProcessor -
我不太明白你所说的“继承 IProcessor 作为泛型”是什么意思。你能解释一下吗?
-
公共类测试:IProcessor
-
IProcessor 包含什么?此接口是否仅用于将对象识别为处理器?
-
它将包含:void Handle(T command);
标签: c# generics constraints covariance contravariance