|
|
|
|
Автор:
|
Atilla
|
|
Тема:
|
множественное наследование в C#
|
|
Дата:
|
8/31/2001 3:18:00 PM
|
Как известно, в C# нет множественного наследования реализации, но есть множественное наследование интерфейсов (собственно, как в Java), но если нельзя но очень хочется - то можно:
пусть есть 2 класса A и B:
class A
{
protected void F1() {}
};
class B
{
protected void F2() {}
};
вместо привычного
class C: A, B {}
можно написать:
class C
{
A a;
B b;
protected void F1(){a.F1();}
protected void F2(){b.F2();}
};
и вот оно вам - "множественное наследование"
(а на самом деле это, кажется, называется аггрегацией).
Теперь другой пример:
class A: Ia
{
// реализуем интерфейс Ia
};
class B: Ib
{
// реализуем интерфейс Ib
};
и вместо
class C: A, B {}
делаем:
class C: Ia, Ib
{
A a;
B b;
};
А теперь, как говорят в "Что?Где?Когда?",
ВНИМАНИЕ: ВОПРОС!
Можно ли где-нибудь в статическом конструкторе или еще где написать что-то вроде
C.Ia=a.Ia; C.Ib=b.Ib;
ну или что-то в этом духе, или мне надо переписывать ВСЕ методы этих интерфейсов:
protected void Ia.F1()
{
Ia ia=a as Ia;
if(ia!=null)
ia.F1();
}
|
|
|
|