在特定委托类型的接口中实现 T 参数约束的方法
Ways to achieve constraint for a T parameter in interface to specific delegate type
我知道从 C#7.3 开始,我们可以使用 T : 委托约束。
我们能否更具体一些——对我们接口所依赖的特定方法签名的约束(我知道代码契约等参数,但如果我们必须这样做的话)
类似的东西?
public delegate int SummingDelegate(int a, int b);
public interface IRelyOn<T> where T : SummingDelegate
{
int ConsumingSum(T summingMethod);
}
编辑:
我的场景是强制执行某种类型的必要方法签名,供 class 从可以模拟和测试的接口中使用。
此场景不需要泛型,其中委托已经表示具有匹配参数列表和 return 类型的任何方法。直接使用委托即可:
public delegate int SummingDelegate(int a, int b);
public interface IRelyOn
{
int ConsumingSum(SummingDelegate summingMethod);
}
我知道从 C#7.3 开始,我们可以使用 T : 委托约束。 我们能否更具体一些——对我们接口所依赖的特定方法签名的约束(我知道代码契约等参数,但如果我们必须这样做的话) 类似的东西?
public delegate int SummingDelegate(int a, int b);
public interface IRelyOn<T> where T : SummingDelegate
{
int ConsumingSum(T summingMethod);
}
编辑: 我的场景是强制执行某种类型的必要方法签名,供 class 从可以模拟和测试的接口中使用。
此场景不需要泛型,其中委托已经表示具有匹配参数列表和 return 类型的任何方法。直接使用委托即可:
public delegate int SummingDelegate(int a, int b);
public interface IRelyOn
{
int ConsumingSum(SummingDelegate summingMethod);
}