這聽起來像你可能正在尋找ExpandoObject類。該類實現IDictionary<string, object>
,允許它存儲名稱/值對。它也實現了IDynamicMetaObjectProvider
;此實現允許您通過dynamic
類型(在C#4.0及更高版本中)使用正常的「點」語法來讀取和編寫在編譯時已知的屬性(即variable.Member
)。
這個例子假設你有一個函數GetPropertyValues()
返回一個IEnumerable<KeyValuePair<string, object>>
與屬性的名稱和值:如果你知道對象有一個ID
屬性和Status
特性,例如
var obj = new ExpandoObject();
var propertyValues = GetPropertyValues();
foreach (var nameValuePair in propertyValues)
obj[nameValuePair.Key] = nameValuePair.Value;
HttpContext.Current.Session[Object1] = obj;
,你可以這樣使用它:
dynamic obj = HttpContext.Current.Session[Object1];
var identifier = obj.ID; // basically the same as var ID = obj["ID"];
obj.Status = GetStatusForID(identifier);
//you can also add properties just by writing to them:
obj.ThisPropertyMightNotExist = "moo";
HttpContext.Current.Session[Object1] = obj;
什麼問題?您定義一個類,實例化它,設置它的屬性並將其放入會話中。如果你有一個數據庫中的值列表,那麼你使用集合等...... – 2012-04-03 17:18:20
你能告訴你想要完成給定的現有代碼片段,並解釋爲什麼你需要存儲會話對象? – Turbot 2012-04-03 17:19:18
@DarinDimitrov做了修改,現在可能更清楚了嗎? – Ber53rker 2012-04-03 17:36:52