Поскольку я работаю a C#
разработчик, я знаю, что мы можем реализовать multiple inheritance
при помощи Interface
.
Может кто-либо предоставлять мне ссылку ИЛИ код для того, как достигнуть multiple inheritance
с C#
.
Я хочу код для того, как достигнуть множественного наследования в C#
с использованием Interface
.
Заранее спасибо.
Вот хороший пример.
Предварительный просмотр кода:
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);
}
}
Это не строго множественное наследование, но ваш класс 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
..
}
Вам необходимо предоставить реализации для всех методов (и свойств), определенных во всех интерфейсах, которые вы Планирую реализовать.
Я не совсем понимаю, что вы ищете в своем вопросе ... не могли бы вы немного уточнить ?? Что ты пытаешься сделать? Где у вас проблемы ??
Реализация множественных интерфейсов НЕ заменяет множественное наследование. Интерфейсы предназначены для указания контракта, которого будет придерживаться класс. Больше похоже на абстрактные классы.
Если вы хотите добиться эффекта множественного наследования, вам может помочь реализация составного шаблона .
Далее следует унаследовать от более чем одного интерфейса:
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 для их вызова, поскольку более конкретное или точное имя типа преобладает над унаследованными типами.
class MyClass : IFirstInterface, ISecondInterface, IThirdInterface
{
// implement the methods of the interfaces
}