Последний пример привяжет вас к надежному экземпляру интерфейса или абстрактного класса, который, как я полагаю, не является вашей целью. Плохая новость в том, что вы НЕ используете язык с динамической типизацией, поэтому вы застряли с ссылка на сплошные объекты «Пример», как ранее проработанные или приведенные / отлитые, т.е.:
AbstractExample example = new Example();
((IExampleInterface)example).DoSomeMethodDefinedInInterface();
Ваши другие переменные должны иметь и AbstractExample, и IExampleInterface для реализации общего интерфейса, чтобы вы могли иметь, т. Е.
abstract class AbstractExample : ICommonInterface
interface IExampleInterface : ICommonInterface
class Example : AbstractExample, IExampleInterface
Теперь вы можете работать с ICommonInterface и иметь функциональность как абстрактного класса, так и реализации вашего интерфейса IExample.
Если ни один из этих ответов не является приемлемым, возможно, вы захотите взглянуть на некоторые языки DLR, которые работают в среде .NET, например IronPython.