我正在开发的项目将大量数据从后端源提取到各种集合(字典,observablecollections等)。为了使这些数据更易于访问,我们将这些集合项公开为属性。
这会创建大量样板代码,以将这些属性映射到其后端字段。我看过AutoMapper,看起来它可能是解决方案的一部分......但听起来它仍然需要手动创建属性列表。
我理想地想要的是将集合项公开为属性的通用方法。 (所有收集项都是强类型的,并且具有属性名称所需的关键字。)
感谢您的帮助。
更新:对于那些寻找代码示例的人:
Dictionary<string,Foo> myDictionary;
myDictionary.Add("MyPropertyName",new Foo());
我基本上想做:
myDictionary.MyPropertyName
访问字典中的相应值。
答案 0 :(得分:1)
使用带有字符串作为每个属性名称的可索引属性更有意义,而在内部类会将字符串映射到某个后端源。
通常,您可以从DynamicObject
派生您的类型,它为此行为提供模板。
在即将推出的C#版本中(您可以获取Roslyn的预览版或源代码),他们引入了新的语法来启用&#34; dynamic&#34;使用语法x.$propertyName
进行属性查找,该语法将扩展为x["propertyName"]