#c#
#c#
Вопрос:
Я работаю над внедрением уровня сохраняемости для нашего приложения и разработал дизайн, в котором у меня есть поставщик, который позволяет клиенту обновлять один ключ, значение, а затем у меня также есть класс транзакции, с помощью которого я могу обновлять несколько пар ключ-значение.
Интерфейсы являются:
public interface IStorageProvider
{
bool GetValue<T>(string key, out T value);
T GetOrCreateValue<T>(string key) where T : new();
bool SetValue<T>(string key, T value);
ITransaction Transaction();
}
public interface ITransaction : IDisposable
{
event EventHandler<TransactionEventArgs> CommitSucceeded;
event EventHandler<TransactionEventArgs> CommitFailed;
bool GetValue<T>(string key, out T value);
bool SetValue<T>(string key, T value);
void Commit();
}
Мне не нравится, что провайдер и транзакция имеют похожие API, такие как GetValue
и SetValue
.
Я бы хотел, чтобы это был единый интерфейс и IStorageProvider
и ITransaction
вытекающий из этого. Что бы вы, ребята, порекомендовали?
Комментарии:
1. Все значения являются
boolean
?2. @ErikPhilips нет. Не уверен, почему вы об этом спрашиваете?
3. Я скучаю по чтению вашего интерфейса.
Ответ №1:
Я уверен, что вы открыли эту тему скорее для получения подтверждения, чем для того, чтобы не знать, что делать. Конечно, можно создать общий интерфейс для этих методов, я не вижу причин, почему бы этого не сделать, если вы поместите его в правильный проект и найдете подходящее имя.
Комментарии:
1. Я думал создать что-то вроде
IKeyValueAccessor
, а затем пустьIStorageProvider
иITransaction
извлекать из этого.2.@Monku должен признать, что это очень подходящее название! И, конечно, вы будете иметь это
IStorageProvider
иITransaction
внедрять. Вот почему я назвал это общим интерфейсом. В наши дни это обычная практика в ООП, посмотрите, например, на IList3. Спасибо за ответ. Я ценю это.
4. Нет проблем, @Monku вот почему мы здесь.