Для нескольких приложений, которые я сделал для своего текущего клиента, у меня есть общие учетные записи пользователей. Это означает, что каждая учетная запись в одном приложении должна существовать в других приложениях.
Каждое приложение имеет собственный набор настроек.
Количество приложений и сами настройки будут теми частями, которые действительно меняются со временем, поэтому я хочу разделить их.
Доступ к хранилищу данных осуществляется через класс IRepository (XMLRepository, SQLRepository и т. Д.).
Они абстрагируют действительную логику доступа к данным.
Класс SettingsService должен иметь возможность получить класс ISetting следующим образом
public T GetSetting<T>(IUser user) where T : ISetting
Поскольку поля класса ISettings будут отличаться для каждого типа, я считаю, что именно класс Settings должен знать, как заполнять свои собственные поля, но не знает, как получить значения.
Однако хранилище знает, как получить доступ к данным, но не знает, куда их поместить.
GetSetting на самом деле является фабричным методом, если я не ошибаюсь. Я чувствую, что эта проблема не является чем-то новым, и, вероятно, есть хороший способ решить эту проблему.
Какие у меня варианты?