我想将对象属性用作字典的关键字。这可以做到吗?使用对象属性作为字典中的键
最终的目标是使用它,以便可以查看属性是否被锁定,在对象可以处于的各种状态下。这些锁定的值不会持久存在,只存在于模型的业务规则中。
查看字段是否锁定的理想代码将如下所示;
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