我想匹配(从类文件中选择)methodsname,属性名称和字段名称。c#正则表达式 - 从类文件(.cs)中选择类属性名称,方法名称和字段
这是示例类:
class Perl
{
string _name;
public string Name { get; set; }
public Perl()
{
// Assign this._name
this._name = "Perl";
// Assign _name
_name = "Sam";
// The two forms reference the same field.
Console.WriteLine(this._name);
Console.WriteLine(_name);
}
public static string doSomething(string test)
{
bla test;
}
}
我的方法的代码:
(?:public|private|protected)([\s\w]*)\s+(\w+)\s*\(\s*(?:\w+\s+(\w+)\s*,?\s*)+\)
和我的问题:
- 这上面的正则表达式的代码所有的方法和它工作得很好,但 也我想它选择方法名称,但没有参数和 访问器。使用我的代码的结果将是因此从exaplmce类: 公众的Perl()和公共静态DoSomething的(字符串测试),但我想这样的结果:的Perl()和DoSomething的()。所以 - 我的代码匹配很好,但我想要显示的结果就像我在前面的句子中写的 。
- 如何选择属性?结果显示:类型和属性 名称。因此,从实例级结果将是:字符串名称
- 如何选择带结果的字段:type field_name。在出情况下, 将是:字符串_name
可能是[This SO Answer](http://stackoverflow.com/a/11647554/1495442) – Ria 2012-08-11 12:03:19
的重复在代码文件上使用反射而不是正则表达式编译的类可能有意义吗?你会得到更可靠的结果(即你不必担心你的正则表达式命令是否覆盖了每种可能的情况),它可以用于任何.NET语言,而不仅仅是C#。 – 2012-08-11 12:06:56
所以我得到.cs类文件的文件夹。我可以编译它“在空气中”,然后使用反射?如何动态编译类例如是否有我可以使用的函数?例如。在按钮上单击comile选定文件夹中的所有cs文件? – born2fr4g 2012-08-11 12:30:31