2013-04-13 66 views
-1

當使用一個類來表示從外部獲得的某些數據時,我經常會發現需要將該類的屬性鏈接到數據的屬性。我最熟悉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")); 
... 
+1

Automapper初始化上dynamic對象的任何屬性通常用來實現這樣的對象爲對象mapping.https://github.com/AutoMapper/AutoMapper。這是你在找什麼 –

+0

@CodeIgnoto,這太基本了,無法證明包含任何外部代碼。我正在尋找解決這個問題的設計模式。 – mowwwalker

+1

「非高級語言,如C#」 - 您認爲哪種語言爲「高級」? –

回答

0

也許dynamic/ExpandoObject會讓C#看起來更友好,你

即你可以設置/獲取與ExpandoObject

dynamic v = new System.Dynamic.ExpandoObject(); 
((IDictionary<String, Object>)v).Add("test", 3); 
Console.Write(v.test);