2015-06-17 2 views
1

В настоящее время у меня есть следующий:интерфейса для класса ребенка, который наследуется от родительского класса без переопределения родительского класса

public class ChildClass : ParentClass 
{... 

ParentClass реализует интерфейс следующим образом (мне нужно ParentClass быть обработана и, следовательно, не может быть абстрактными) :

public class ParentClass : IParentClass 
{... 

Я также хочу дочерний класс для реализации интерфейса, так что я могу дразнить этот класс, но я хочу, наследуемые члены ParentClass быть видны ChildClass интерфейса.

Так что если у меня есть метод MethodA() в родительском классе, я хочу, чтобы этот метод можно было вызывать при использовании IChildClass, а не только ChildClass.

Единственный способ, которым я могу думать о том, чтобы переопределить метод в ChildClass, определить этот метод в IChildClass и просто называют base.MethodA(), но это реально не кажется правильным

ответ

5

Если я вас правильно понял, вы говорите, что вам нужна иерархия наследования как на ваших интерфейсах, так и на ваших классах.

Это, как вы бы достичь такую ​​вещь:

public interface IBase 
{ 
    // Defines members for the base implementations 
} 

public interface IDerived : IBase 
{ 
    // Implementors will be expected to fulfill the contract of 
    // IBase *and* whatever we define here 
} 

public class Base : IBase 
{ 
    // Implements IBase members 
} 

public class Derived : Base, IDerived 
{ 
    // Only has to implement the methods of IDerived, 
    // Base has already implement IBase 
} 
+0

Блестящее спасибо, что работает отлично! –

2

Я думаю, что вы можете сделать две вещи.

1) Вы можете наследовать несколько интерфейсов. C# поддерживает это. Вы можете наследовать только один базовый класс, но вы можете наследовать от нескольких интерфейсов.

2) Вы можете сделать свои интерфейсы наследуемыми друг от друга. Интерфейс IChildClass может наследовать от интерфейса IParentClass.

Помогло ли это?

Смежные вопросы