类型约束的扩展方法

4

我有一组用户控件,定义如下...

public class Control1: UserControl, Shop.Stock.IBlue

public class Control2: UserControl, Shop.Stock.IBlue

public class Control2: UserControl, Shop.Stock.IBlue

请注意,这里大约有200个内容,它们在实际项目中的名称更好。

我想在基于UserControl并实现Shop.Stock.IBlue接口的对象上编写扩展方法。

我不希望扩展方法只针对UserControl有效。

是否有一种方法可以做到这一点,而不需要添加新的基类?


2
扩展方法不能用于实现接口。扩展方法仅适用于调用方,并且仅在编译时有效:而不是针对实际类本身。 - Marc Gravell
1个回答

8

如果我理解问题正确的话,您希望定义一个扩展方法,仅适用于实现了 IBlue 接口的 UserControls

   public static void Foo<T>( this T obj )
       where T : UserControl, IBlue
    {

    }

是的,那就是我想要做的。我会去尝试一下。 - Jonathan D
我收到了“类型参数'T'已经指定了约束子句。类型参数的所有约束必须在单个where子句中指定。” - Jonathan D
已更新 - 应该可以编译(我刚试了一下)。在某些情况下,多个where从句是有效的。 - Tim M.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接