NotifyOfPropertyChange

NotifyOfPropertyChange

我遇到以下问题:

我想用LINQ成员表达式替换包含属性名称的硬编码字符串

// like this:
NotifyOfPropertyChange("MyProperty");
// becomes
NotifyOfPropertyChange(() => MyProperty);


具有ReSharper模式。

以下尝试不起作用:

NotifyOfPropertyChange("$prop$"); // ($prop$ is of type Identifier, results in parse error)
NotifyOfPropertyChange($prop$); // ($prop$ is of type Expression [System.String],
                                // almost works, but without removing the quotes


替换模式始终相同:

NotifyOfPropertyChange(() => $prop$);


有任何想法吗?

最佳答案

我认为您不需要在这里进行R#的结构搜索和替换(这很幸运,因为我认为在当前版本中它不能做到这一点)。 Visual Studio的“查找和替换”正则表达式应该足够好:

Find What:
NotifyPropertyChange\("{.*}"\)


( )被转义,因此它们不会成为分组构造; { }标记与模式中的任何匹配项均可用于替换表达式

Replace with:
NotifyPropertyChange(() => \1)


除了\1以外,这里的所有内容均为文字,表示“第一个标记的表达式”。

10-02 19:36