Множественное наследование в C#

Поскольку я работаю a C# разработчик, я знаю, что мы можем реализовать multiple inheritance при помощи Interface.

Может кто-либо предоставлять мне ссылку ИЛИ код для того, как достигнуть multiple inheritance с C#.

Я хочу код для того, как достигнуть множественного наследования в C# с использованием Interface.

Заранее спасибо.

6
задан nunu 13 August 2010 в 05:26
поделиться

5 ответов

Вот хороший пример.

http://blog.vuscode.com/malovicn/archive/2006/10/20/How-to-do-multiple-inheritance-in-C_2300_- 2D00 -Перед делегированием реализации -_2800_IOD_2900_.aspx

Предварительный просмотр кода:

interface ICustomerCollection
{
      void Add(string customerName);
      void Delete(string customerName);
}

class CustomerCollection : ICustomerCollection
{
      public void Add(string customerName)
      {
            /*Customer collection add method specific code*/
      }
      public void Delete(string customerName)
      {
            /*Customer collection delete method specific code*/
      }
}

class MyUserControl: UserControl, ICustomerCollection
{
      CustomerCollection _customerCollection=new CustomerCollection();

      public void Add(string customerName)
      {
            _customerCollection.Add(customerName);
      }
      public void Delete(string customerName)
      {
            _customerCollection.Add(customerName);
      }
}
7
ответ дан 8 December 2019 в 03:24
поделиться

Это не строго множественное наследование, но ваш класс C # может реализовывать несколько интерфейсов, верно:

public class MyClass : BaseClass, IInterface1, IInterface2, IInterface3
{
   // implement methods and properties for IInterface1
   ..

   // implement methods and properties for IInterface2
   ..

   // implement methods and properties for IInterface3
   ..
}

Вам необходимо предоставить реализации для всех методов (и свойств), определенных во всех интерфейсах, которые вы Планирую реализовать.

Я не совсем понимаю, что вы ищете в своем вопросе ... не могли бы вы немного уточнить ?? Что ты пытаешься сделать? Где у вас проблемы ??

12
ответ дан 8 December 2019 в 03:24
поделиться

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

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

7
ответ дан 8 December 2019 в 03:24
поделиться

Далее следует унаследовать от более чем одного интерфейса:

class EmptyClass : IDoSomething, IDoSomethingElse
{
}
interface IDoSomething
{
}
interface IDoSomethingElse
{
}

static class InterfaceExtensions
{
    public static int DoSomething(this IDoSomething tThis)
    {
        return 8;
    }
    public static int DoSomethingElse(this IDoSomethingElse tThis)
    {
        return 4;
    }
}

Используя методы расширения в интерфейсе, вы можете получить нечто большее, чем множественное наследование, чем просто прикрепление интерфейсов. Поскольку методы не являются частью определения интерфейса, вам также не нужно реализовывать их в классе, если вы этого не хотите. (На самом деле не переопределяя их, вам нужна ссылка на тип EmptyClass для их вызова, поскольку более конкретное или точное имя типа преобладает над унаследованными типами.

1
ответ дан 8 December 2019 в 03:24
поделиться
class MyClass : IFirstInterface, ISecondInterface, IThirdInterface
{
  // implement the methods of the interfaces
}
2
ответ дан 8 December 2019 в 03:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: