行。所以我有一些代码将winForm上的某些控件映射到对象中的某些属性,以便在数据发生某些事情时对控件执行某些事情。一切都很好,工作正常。不是问题。问题是,要将项目添加到映射中,我调用了一个如下所示的函数:
this.AddMapping(this.myControl,myObject,"myObjectPropertyName");
我遇到的问题是,在编译时很难分辨上面的行和下面的行之间的区别:
this.AddMapping(this.myControl,myObject,"myObjectPropretyName");
由于最后一个参数是字符串,因此没有编译时检查或类似的东西会强制字符串本身实际上对应于给定对象上的有效属性名称。此外,诸如 Refactor 和“查找所有引用”之类的东西错过了这种引用,当属性名称本身发生变化时会导致欢闹。所以我想知道是否有某种方法可以改变函数,这样我传入的仍然是以某种方式表示属性名称的字符串,但是编译时会检查实际值。有人说我可以用表达式树做到这一点,但我已经阅读了它们,似乎没有看到联系。我很想做类似的事情:
this.AddMapping(this.myControl,myObject,myObject.myObjectPropertyName);
甚至
this.AddMapping(this.myControl,myObject.myObjectPropertyName);
会很甜!
有任何想法吗?