У меня есть несколько элементов управления в одном из моих приложений, которые, очевидно, расширяют класс Control.
Мне нужно несколько из них, чтобы иметь некоторый общий интерфейс, поэтому я создал интерфейс, который охватывает общую функциональность.
Можно ли каким-либо образом обеспечить, чтобы мой интерфейс передавался только подклассу Control?
т.е. (Pseudo)
interface IEmbed
class MyControl1 : Control, IEmbed
class MyControl2 : Control, IEmbed
class MyClass : IEmbed
В идеале я бы хотел, чтобы компилятор не работал здесь, потому что MyClass пытается реализовать IEmbed, даже если он не является элементом управления.
Я ошибся в этом или есть способ заставить это поведение?
Редактировать
Меня спросили, почему яЯ хочу применить это поведение.
У меня есть метод, который я хочу взять любую реализацию IEmbed и добавить его в качестве дочернего элемента управления в другой элемент.
Это все хорошо, но Controls.Add () отказывается принимать объект IEmbed, и это не компилируется.
Я подумал, если скажу компилятору, что что-либо реализующее IEmbedдолжен быть контроль, он может работать?