【发布时间】:2013-04-05 17:11:50
【问题描述】:
当使用一个类来表示一些外部获取的数据时,我经常发现需要将该类的属性链接到数据的属性。我最熟悉 Javascript,所以当这个出现时,我首先想到的是创建一个数组,其中包含一个对象上的属性名称和外部数据上的属性名称。
例如,如果数据是:
var jsonObj = {
"aString": "this is a string value",
"aNum": "44235",
"aColor: "125,125,125"
}
我可能会创建一个数组结构,例如:
var linker = [
["aString", "title", "string"],
["aNum", "userCount", "int"],
["aColor", "color", "color"]
]
跟踪源属性名称、新对象上的属性名称以及值的类型。我很难在非高级语言(如 C#)中考虑类似的解决方案。想到了反射,但似乎没有正确的使用它的地方。
如何在不执行以下操作的情况下将一组字符串与一组属性关联起来?:
obj.setTitle(data.getValue("aString"));
obj.setUserCount(data.getValue("aNum"));
obj.setColor(data.getValue("aColor"));
...
【问题讨论】:
-
Automapper 通常用于实现这种对象到对象的映射。github.com/AutoMapper/AutoMapper。这就是你要找的东西
-
@CodeIgnoto,这太基础了,无法证明包含任何外部代码的合理性。我正在寻找解决这个问题的设计模式。
-
“一种非高级语言,如 C#” - 您认为哪些语言是“高级”?
-
@AlexeiLevenkov,我认为 PHP、Python、Javascript、Groovy、Perl 和类似语言是高级语言。
-
我看到“高级”=“动态类型”。看看dynamic 在 C# 中是否适合你...
标签: c# design-patterns language-agnostic