У меня есть набор статических c данных, MasterData , которые в настоящее время хранятся как Singleton . В другой библиотеке у меня хранится аналогичный набор данных, опять же как синглтон, GlobalData . GlobalData содержит все данные из MasterData, а также некоторую дополнительную информацию (см. Ниже упрощенный пример).
public class MasterData
{
public Dictionary<string, List<double>> DataSeries { get; private set; }
public List<DateTime> Dates { get; private set; }
public static MasterData Instance { get; } = new MasterData();
static MasterData() {}
private MasterData() {}
public void LoadData() {}
}
public class GlobalData
{
public Dictionary<string, List<double>> DataSeries { get; private set; }
public List<DateTime> Dates { get; private set; }
// extra data props
public Dictionary<string, DomainObject> OtherData { get; private set; }
...
public static GlobalData Instance { get; } = new GlobalData();
static GlobalData() {}
private GlobalData() {}
public void LoadData() {}
}
Моя цель - избежать двойного сохранения перекрывающихся данных в случаях, когда обе библиотеки импортируются. Для этого я хотел бы использовать наследование, чтобы избежать дублирования как можно большего количества logi c LoadData, а также позволить приложениям, использующим librar (y / ies), решать, что необходимо .
Из того, что я прочитал, кажется, что шаблон Decorator может быть полезен, поскольку я мог бы хранить ссылку на MasterData в GlobalData. Однако я считаю, что это не сработает в приложениях, где нужны только GlobalData. Я знаю, что оба синглтона реализуют интерфейс, но это приведет к дублированию logi c для загрузки свойств MasterData.
Думаю, мне интересно, возможно ли то, что я хочу сделать ; и если это так, мы будем очень благодарны за любую помощь в этом направлении!