查找具有单个属性的类

时间:2016-06-30 15:36:59

标签: c# regex

铊; DR;
找到只拥有一个字符串属性的c#类的正则表达式是什么? (没有方法或其他属性)

长篇故事:
我现在领导技术领导一个维护多种解决方案的团队。环顾四周,我发现了很多Dictionary<string, SpecialValue>的案例,其中SpecialValue是一个包含单个公共字符串属性的类,名为&#34; value&#34;。
这里的意思是,得到的Json就像{"dictionaryKey":{value:"myValue"}} 我想知道我们有多少这样的案例。
Visual Studio可以使用正则表达式搜索,因此...查找具有单个字符串属性的类的正则表达式是什么?

1 个答案:

答案 0 :(得分:0)

我发现Visual Studio对正则表达式搜索的支持有点短。它不支持\s\W\B以及更多模式。

假设所有类始终只有一个公共字符串auto-property,没有方法,继承,泛型或任何东西,例如类:

class Test
{
    public String Value { get; set; }
}

正则表达式:

class[\r\n\t\f ]+[^\d]\w*[\r\n\t\f ]*{[\r\n\t\f ]*public[\r\n\t\f ]+(string|String)[\r\n\t\f ]+[^\d]\w*[\r\n\t\f ]*{[\r\n\t\f ]*get[\r\n\t\f ]*;[\r\n\t\f ]*set[\r\n\t\f ]*;[\r\n\t\f ]*}[\r\n\t\f ]*}

应涵盖大部分案件。请注意,之前的正则表达式还会捕获注释或非法位置的类。例如,注释掉或在方法内部声明的类将被这个正则表达式捕获,因为它只搜索字符串文字并且不检查C♯所需的所有语法(无论如何,这对于正则表达式来说都是不可能的工作)。