@stasersmailov

Можно ли как-то более удобно реализовать вызов метода по умолчанию в интерфейсах?

У меня есть интерфейс
public interface IEvent<Handler, Arguments> where Handler : IHandler<Handler, Arguments>
{
    public void Create(Arguments arguments)
    {
        /////
    }
}


и если унаследоваться от него, что бы вызвать метод Create нужно вот такую конструкцию писать
(this as IEvent<Handler, Argument>).Create(argument);

можно ли это как-то более удобно реализовать?
например
Create<Handler, Argument>.Create(argument)
без кастов

P.S. Реализация через статический класс и через абстрактный класс не устраивает в моём случае
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
без кастов

Нет, такой синтаксис придуман специально, чтобы избежать проблем от множественного наследования.
Обойти не получится - только спрятять.
Например в случае this можно провернуть что-то такое:
private IEvent<Handler, Argument> thisEvent => this;
// ...
thisEvent.Create(argument);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы