我想將對象屬性用作字典的關鍵字。這可以做到嗎?使用對象屬性作爲字典中的鍵
最終的目標是使用它,以便可以查看屬性是否被鎖定,在對象可以處於的各種狀態下。這些鎖定的值不會持久存在,只存在於模型的業務規則中。
查看字段是否鎖定的理想代碼將如下所示;
bool ageLocked = myObject.IsFieldLocked(x => x.Age);
bool nameLocked = myObject.IsFieldLocked(x => x.Name);
IsFieldLocked是myObject類型的擴展方法。
我希望字典能夠在myObject中生存,並且可以根據對象的狀態使用不同的字典變體進行替換,例如,已經下了命令或等待順序會有不同的字典定義。
希望我能夠使用工廠創建不同的字典變體;
Factory.CreateAwaitingOrderLockedFields()
Factory.CreateOrderPlacedLockedFields()
定義詞典看起來像這樣
new Dictionary< ***MissingMagic***, bool>()
{
{ x => x.Age , true},
{ x => x.Name, false}
}
目的是避免該密鑰爲字符串,強類型的關鍵是迄今爲止較爲理想。
明智的內部存儲類型字符串被封裝,並獲得了字典構造和字段鎖定檢查的強類型檢查。非常感謝 – c00ke 2010-10-29 11:54:41
性能是否與此解決方案有關? – c00ke 2010-10-29 12:08:10
@ c00ke,不幸的是,實際上在創建表達式樹時會有一些開銷。但是你多久會調用這種方法?你必須測試它是否真的對你的方案產生影響。 – herzmeister 2010-10-29 12:35:28