2012-02-17 4 views
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

Метод расширения не может использоваться для реализации интерфейса. Методы расширения предназначены только для вызывающего, и только во время компиляции: не для самого собственно класса –

ответ

8

Если я правильно понял вопрос, вы хотите определить метод расширения, который применим только к UserControls, которые реализуют IBlue.

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

    } 
+0

Да, это то, что я пытаюсь сделать. плохо пойти дать ему попробовать –

+0

Я получаю «Предложение ограничения было уже указано для параметра типа« T ». Все ограничения для параметра типа должны быть указаны в одном предложении where». –

+0

Обновлено - это должно компилироваться (просто попробовал). Несколько условий, в которых условия действуют в определенных условиях. –

Смежные вопросы