Проблема, которую я продолжаю затрагивать в своем коде, выглядит следующим образом:
public Dictionary<string, int> NumericProperties { get; set; }
public Dictionary<string, string> TextProperties { get; set; }
public Dictionary<string, string[]> CollectionProperties { get; set; }
public Dictionary<string, KeyValue[]> DependencyProperties { get; set; }
public T GetProperty<T>(string name)
{
//find out which property dictionary and return value
}
Есть ли способ сделать это эффективно в C #?Еще одна мысль, которая у меня возникла, заключалась в том, чтобы создать один Dictionary
типа <string, object>
и использовать его (я знаю, что нет типа generic
Dictionary
, который я тоже могу использовать), и тогда это был бы просто случай, возвращающийобъект, который может быть Pattern Matched
, чтобы найти свой оригинальный тип.
Проблема с этой опцией заключается в boxing
и un-boxing
переменных, а также в том, что она теряет свою общую природу.Другим вариантом является создание абстрактного базового класса для Property
, однако, поскольку каждое свойство будет состоять из пары имя-значение и, следовательно, потребует снова generics
, и мы попадаем в ту же проблему, пытаясь динамически возвращать разные Types
.
Любая помощь будет высоко ценится!Благодаря.