Полученный Интерфейс с полученным интерфейсным участником

От Сайта Apple Dev:

Для запущения приложения в альбомном режиме так, чтобы строка состояния сразу была в соответствующем положении отредактируйте файл Info.plist для добавления ключа UIInterfaceOrientation с соответствующим значением (UIInterfaceOrientationLandscapeRight или UIInterfaceOrientationLandscapeLeft), как показано в Списке 2 Списков 2.

: Запущение Вашего приложения в альбомном режиме

<key>UIInterfaceOrientation</key>
<string>UIInterfaceOrientationLandscapeRight</string>
6
задан Sys 4 November 2009 в 10:22
поделиться

2 ответа

Вероятно, вы захотите использовать здесь универсальные шаблоны:

public interface IViewBase { }

public interface IPresenterBase<T> where T : IViewBase
{
    T View { get; set; }
}

затем:

public interface ILogPresenter : IPresenterBase<ILogView> { }

public interface ILogView : IViewBase{ }

Помимо ковариантных возвращаемых типов, которые не поддерживаются в C # (что может вызвать проблемы даже только с геттером), у вас есть фундаментальная проблема в оригинале. Я мог бы сделать:

IPresenterBase foo = new LogPresenterImpl();
foo.View = new SomeOtherView();

где SomeOtherView реализовал IVewBase , но не ILogView . Как вы ожидаете, что ваша собственность справится с этим?

Общая версия, приведенная выше, решает эту проблему, позволяя докладчику выражать, какой вид он представляет.

9
ответ дан 9 December 2019 в 22:36
поделиться

Вы можете сделать это с помощью дженериков:

public interface IViewBase { }

public interface IPresenterBase<T> where T : IViewBase
{
    T View { get; set; }
}

public interface ILogPresenter : IPresenterBase<ILogView> { }

public interface ILogView : IViewBase { }

public class LogPresenter : ILogPresenter
{
    public ILogView View { get; set; }
}
2
ответ дан 9 December 2019 в 22:36
поделиться
Другие вопросы по тегам:

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