Вы должны взглянуть на Pattern Decorator , который позволяет расширять класс композицией.
например.
Данный запечатанный класс A, который реализует InterfaceA:
public interface InterfaceA
{
int A {get; set;}
}
public sealed Class A : InterfaceA
{
public int A {get;set;}
}
Вы можете расширить InterfaceA, а затем использовать класс декоратора B для инкапсуляции экземпляра класса A и предоставления дополнительных методов.
public interface MyExtendedInterfaceA : InterfaceA
{
int B {get;set}
}
public class B : MyExtendedInterfaceA
{
private InterfaceA _implementsA = new A();
public int A
{
get
{
return _implementsA.A;
}
set
{
_implementsA.A = value;
}
}
public int B {get; set;}
}
В качестве альтернативы, декоратор класса C может добавить совершенно новый интерфейс:
public interface InterfaceC
{
int MethodC();
}
public class C : InterfaceA, InterfaceC
{
private InterfaceA _implementsA = new A();
public int A
{
get
{
return _implementsA.A;
}
set
{
_implementsA.A = value;
}
}
public int MethodC()
{
return A * 10;
}
}