Предположим, у меня есть класс с несколькими свойствами, которые соответствуют пользовательским параметрам, таким как:
bool StepUpHedge { get; set; }
bool PullOnJump { get; set; }
bool PullOnCross { get; set; }
double MaxStockSpread { get; set; }
double MaxHedgeSpread { get; set; }
(Это всего лишь примеры, а не реальный код, и в любом случае, что они имеют в виду, не важно.)
Теперь, скажем, на самом деле существуют десятки или даже сотни этих пользовательских параметров. Сохранение / загрузка и (что лучше всего) копирование всех или некоторых из одного экземпляра класса в другой может быть довольно громоздким.
Очевидно, я не хочу просто создавать один Dictionary<Parameter, object>
, чтобы хранить их все (безопасность типа? Бокс? Что это?), Но было бы было бы неплохо иметь возможность перечислять более их (без размышления), что заставляет меня задуматься ...
Что если бы я сделал несколько словарей:
public enum BoolParameter { /*...*/ }
public enum DoubleParameter { /*...*/ }
public enum IntParameter { /*...*/ }
Dictionary<BoolParameter, bool> BoolParameters { get; set; }
Dictionary<DoubleParameter, double> DoubleParameters { get; set; }
Dictionary<IntParameter, int> IntParameters { get; set; }
Я знаю, что это кажется очень ненадежным, и есть более понятные способы работы со свойствами в general (например, путем подкласса их в логические группы); но то, что я не могу , кажется, обернулось вокруг меня, - это как еще обеспечить полную желаемую функциональность легко поддерживаемым способом.
Требуемая функциональность: возможность отображать все пользовательские параметры для выбранного экземпляра, выбирать свойства для копирования и копировать значения только этих выбранных свойств из одного экземпляра в другой. Используя перечислимый интерфейс для этих свойств, это становится довольно просто сделать - и добавить новый параметр так же просто, как добавить его в словарь. В противном случае, без использования отражения, мне трудно его увидеть.
Если подумать, может мне стоит использовать строго типизированный DataSet для всего этого ...