Как расширить интерфейс?

75
2

Мне нужно добавить новый метод (MethodC) к интерфейсу, но только для одного конкретного класса. Вместо того, чтобы засорять текущий интерфейс (IMyInterface), я бы хотел использовать другой интерфейс для этого одного класса. Этот новый интерфейс будет содержать только один новый метод (MethodC). Но класс использует новый интерфейс и должен использовать методы в IMyInterface.

Я не уверен, как это можно структурировать. Я отправляю обратно тип IMyInterface из заводского метода. Я не знаю, как второй интерфейс можно отправить назад, или если я могу его позже направить.

IMyInterface
- MethodA()
- MethodB()

//new interface for single class
IMyInterfaceExtend
- MethodC()

//factory method definition
IMyInterface Factory()

IMyInterface myi = StaticClass.Factory()
myi.MethodA()
myi.MethodB()
// sometime later
// I know this doesn't work but kind of where I'm wanting to go
((IMyInterfaceExtend)myi).MethodC()

Любые идеи, как это можно сделать?

спросил(а) 2021-01-19T14:22:47+03:00 2 месяца, 4 недели назад
1
Решение
75

public interface BaseInterface
{
string FirstName { get; set; }
string LastName { get; set; }

void Method1();
}

public interface ExtendedInterface
{
string FulllName { get; set; }

void Method2();
}

public class ClassA : BaseInterface
{
public string FirstName { get; set; }
public string LastName { get; set; }

public void Method1()
{
}
}

public class ClassB : BaseInterface, ExtendedInterface
{
public string FirstName { get; set; }
public string LastName { get; set; }

public string FullName { get; set; }

public void Method1()
{
}

public void Method2()
{
}
}

ответил(а) 2021-01-19T14:22:47+03:00 2 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема