Последний пример привяжет вас к твердому экземпляру либо интерфейс или абстрактный класс, который я предполагаю это не ваша goal.The плохая новость заключается в том, вы не в динамично типизированный язык, поэтому ваш застрял либо имея ссылку на твердом теле «Пример» объектов, как ранее sprcified или литье/uncasting т.е.
AbstractExample example = new Example();
((IExampleInterface)example).DoSomeMethodDefinedInInterface();
ваши другие alternitives должны иметь как AbstractExample и IExampleInterface реализовать общий интерфейс, вы бы указали то, что
abstract class AbstractExample : ICommonInterface
interface IExampleInterface : ICommonInterface
class Example : AbstractExample, IExampleInterface
Теперь вы можете работать с ICommonInterface и иметь функциональность как абстрактного класса, так и реализации вашего интерфейса IExample.
Если ни один из этих ответов не является приемлемым, вы можете захотеть взглянуть на некоторые языки DLR, которые выполняются в рамках платформы .NET, то есть IronPython.
Спасибо, что оба ваших ответа очень полезны;) Я немного смущен C#, потому что я родом из PHP/Zend, и это довольно разные языки. –
Да, я думаю, что многие люди тоже пришли с этого фона (включая меня). Вы можете делать вещи со статическими языками, которые невозможны с динамическим и наоборот. Самое лучшее, что нужно сделать, это понять разницу и увидеть, где линия может быть слегка размыта. .NET 3.5 представил некоторые замечательные функции, которые делают язык «динамичным», решение Kent Boogaart - это хорошее начало, возможно, получить функции, которые вы ищете, без многословия дополнительных интерфейсов. – Owen
Сокращенный. C# не является динамически типизированным языком. Также вы не даете простейший ответ, например Example example = new Example(); –