Это пример моей общей проблемы:
У меня есть разные реализации ITextSearcher для поиска чего-либо. Каждая реализация имеет свои настройки, которые могут быть изменены пользователем. Поэтому я не могу сделать общее редактируемое представление для реализаций (потому что настройки не могут быть абстрагированы интерфейсом).
Я разработал простую библиотеку, которая помогает в таких ситуациях. Это позволяет декларативно пометить класс и его свойства с информацией о представлении. Генератор представлений использует эту информацию для визуализации класса. Это пример:
[Editable]
internal class TermSearcher : ITextSearcher
{
[Editable(Name="Search Expression", Order = 1)]
public string Expression
{...}
[Editable(Name="Match Similar Characters", Order = 2)]
public bool MatchSimilarChars
{...}
// rest of the implementation ...
}
Есть ли лучшее решение?