我有2个具有属性的对象,如下所示:
对象1:
人
对象2:
PersonRule
PersonRule由UI驱动,UI设置人员规则(也可以设置多个),并且用户说出规则中应该包含的名称,位置和年龄.如果此人具有相同的属性值,则应将此规则与人匹配.
我可以进行简单的相等检查,但是将来也可能会将新属性添加到人员规则,例如personaddress.然后我需要通过考虑人员地址来检查规则是否与人匹配.
有没有办法可以构建匹配personrule到person属性的所有属性的东西,这样当新属性添加到规则时我不需要进行更改?当然,这是假设相应的属性在person对象中可用.
谢谢,-Mike
您可以使用一个可用的对象到对象映射器库,如AutoMapper或EmitMapper.他们将负责将数据从Person实例复制到PersonRule实例,该实例可以与另一个PersonRule实例进行比较.例如,使用EmitMapper,您的代码可能如下所示:
var config = new DefaultMapConfig().MatchMembers((m1, m2) => "Person" + m1 == m2);
ObjectMapperManager.DefaultInstance
.GetMapper<Person, PersonRule>(config)
.Map(person, personRule);
Run Code Online (Sandbox Code Playgroud)