Я хочу иметь доступ к значениям свойств в объекте, таком как словарь, используя имя свойства в качестве ключа. Мне все равно, вернутся ли значения как объекты, поэтому Dictionary<string, object>
в порядке. Это предполагаемое использование:
object person = new { Name: "Bob", Age: 45 };
IDictionary<string, object> lookup = new PropertyDictionary(person);
string name = (string)person["Name"];
person["Age"] = (int)person["Age"] + 1; // potentially editable
Я собирался реализовать свой собственный класс для этого, но затем я начал замечать такие классы, как DynamicObject, реализовать интерфейс IDictionary, который заставлял думать, что это уже делается для меня где-то.
То, что я хочу, похоже на функциональность, используемую ASP.NET MVC, которая позволяет использовать анонимные типы для установки атрибутов HTML-тегов. У меня есть много классов, которые используют словари в качестве источников данных, но большую часть времени я также должен иметь возможность передавать объекты.
Поскольку это для общедоступной библиотеки, я думал, что создам класс многократного использования, который просто украсил объект интерфейсом IDictionary. Это избавит меня от создания перегрузки перегрузок.