非严格的多接口类型参数约束?

bak*_*san 6 c# generics type-constraints

对不起,如果这是一个骗局,但我似乎无法得到正确的关键字组合来过滤各种类型约束和泛型问题(因为有很多).

我有两个接口 - 让我们称它们为IOnlineIOffline.

它们密切相关,因为它们描述了几乎相同的契约,但它们之间的关键差异之一是将使用具体实现的上下文.这不完全是我的情况,但它很好地说明了问题.

然后,我有一些方法可以对付这些接口的具体实现者.有时这些方法只想处理一种类型而不是另一种类型.

很简单:

public void DoStuff<T>(string foo) where T : IOnline {}
Run Code Online (Sandbox Code Playgroud)

踢球者正在实现可以在EITHER类型上操作的方法的代码.我认为这是正确的,但在阅读编译错误时,我期望约束将被解释为"允许任何类型T在这里一般使用,如果它们实现IOnline OR IOffline",实际上被解释为"允许任何类型"如果它们同时实现,则在这里使用T".

public void DoStuff<T>(string foo) where T : IOnline, IOffline {}
Run Code Online (Sandbox Code Playgroud)

尝试实现具有相同名称但不同约束的两个单独方法失败,因为存在明显的歧义问题 - 我们没有超载,因为参数列表是相同的(因为期望的行为是相同的).

可以为两个不同的方法使用两个不同的名称,每个方法都有适当的约束,但这看起来很糟糕,并使得下游的其他事情成为屁股的痛苦......可行但不理想.

我觉得必须有一些我在这里缺少的东西...我觉得在通用的土地上非常舒服,但这是我第一次完成我所追求的目标,我觉得我只是在旋转我的车轮atm.

wom*_*omp 8

像第二个例子那样提供多个约束确实是附加的.关于泛型约束MSDN页面有一点关于此.

您是否可以使两个接口继承自基接口,并将方法约束为基类型?