Здравствуйте, alexkh, Вы писали:
Z>>>А теперь расскажите зачем нужен этот интерфейс?
A>Вопрос был как можно красиво описать setting в интерфейсе. Всё остальное для краткости я опустил =)
Ответ на вопрос будет? Какую унификацию экшенов он даст внешнему коду?
A>Ваша идея позволить любому экшену работать с любыми настройками это серьёзный overhead, который кроме громоздкого, трудночитаемого кода и кучи проблем ничего не принесёт.
Не понял. Каким образом?
A>Да и реализация невнятна. Как по вашему будут выглядеть PlayAudioSetting или MeasureBreathSettings ?
Это личное дело PlayAudio и MeasureBreath. Интерфейсу (и как следствие коду с ним работающему) это побоку.
A>Конкретному Action'у нужен конкретный тип Settings. PlayAudioAction знает в его settings лежит путь к файлу, а не количество вдохов в секунду. Поэтому он смело может юзать PlayAudioSetting
A>и не париться =)
Я ему мешаю?

Пусть внутри себя юзает что хочет, для внешнего кода только откроет их в обобщенном интерфейсе
A>Теперь с гуя можно создавать объекты Action(напрямую или через Factory) и сохранять если надо. Вызывающий поток берёт экшн и через интерфейс запускает его, дёргая Invoke.
A>Т.е. по сути нужно реализовать паттерн Command, если я правильно понял. =)
Напишите код который сортирует массив экшенов по имени. Может тогда поймете свою ошибку. Дженерик интерфейс тут как палка в колесе.