Not like you do not, but you can use composition rather than inheritance to solve your problem:
interface IFoo { abstract void Bar(); } class AdvancedFoo : IFoo { override void Bar() { base.Foo(); ... } } sealed class SuperiorFoo : IFoo { private IFoo _fooImplementer; public SuperiorFoo() { _fooImplemnter = new AbstractFoo(); } public SuperiorFoo(IFoo fooImplementer) { _fooImplementer = fooImplementer; } void Bar() { _fooImplementer.Foo(); } }
To call from the second assembly, you must use the second constructor by passing an instance of your new advancedfoo class.
source share