【发布时间】:2021-11-13 00:59:42
【问题描述】:
我知道从 C#7.3 开始,我们可以使用 T : Delegate 约束。 我们能否更具体一点 - 对我们的接口所依赖的特定方法签名的约束(我知道代码合同等参数,但如果我们必须这样做) 类似的东西?
public delegate int SummingDelegate(int a, int b);
public interface IRelyOn<T> where T : SummingDelegate
{
int ConsumingSum(T summingMethod);
}
编辑: 我的场景是从一个可以模拟和测试的接口强制类使用某种类型的必要方法签名。
【问题讨论】:
-
你不能只使用
int ConsumingSum(Func<int, int, int> summingMethod)吗?当泛型不能是其他任何东西时,将其限制为没有太大意义,所以我认为您所追求的不可能 -
@CamiloTerevinto 感谢您的回复。我现在同意这没有太大意义。经过一番研究,这实际上是不可能的,因为委托是密封类(我现在很明显)不能用作约束语句的基类。