我正在做一些Odbc DataReader。在查詢結果中的每一行應該被改造成一個ResultObject
看起來像這樣:委託給C#中的屬性
struct ResultObject {
public int Prop1 { get; set; }
public string Prop2 { get; set; }
...
}
爲了寫多個域專用代碼,我想
var query = "SELECT Prop1, Prop2, ... FROM MyTable;";
... connect, submit query
while(reader.Read()) {
var fieldValue = fields[ fieldindex ];
switch(fieldindex) {
case(indexProp1): result.Prop1.Set((int) fieldValue); break;
case(indexProp2): result.Prop2.Set((string) fieldvalue); break;
...
}
}
改變這個代碼到更多的東西一般,我在那裏建立和指數之間的映射「二傳手動態:
但它會是不錯的東西更加簡潔,如:
PropMapper mappers[] = {
new PropMapper("Prop1", ResultType.Prop1),
new PropMapper("Prop2", ResultType.Prop2),
....
};
但是,我不知道如何從ResultType
的財產創建PropMapper
。
問題:
我能在一個封裝/委託給一個給定類型的屬性的對象?
注:雖然奧姆斯對於這個非常有用的,我真的只要求C#如何允許創建委託(或任何等價物)
這樣的工作最好與重構。從lambda中,屬性名稱,getter和setter都可以確定。 – 2011-05-30 15:42:33