【发布时间】:2019-11-06 00:25:23
【问题描述】:
我的任务是从 .cs 文件中找到具有某些属性的属性。所以我得到了 .cs 文件,我必须在它们中搜索某些属性并将它们保存在 XML 中。
因此,每个具有属性 [ID] 的属性我都应该将值与 ID 一起存储。 在上下文中我应该如何实现这一点,使用了“即时编译器”和“反射”这个词。但我不知道如何开始,因为我以前从未使用过即时编译器/反射。
首先我用正则表达式尝试了它,但我无法获得属性。将 .cs 文件作为字符串加载时如何获取属性值? (或者我应该怎么做?) 我搜索的 .cs 文件:
[ID(12345678)]
public string quack {get; set}
我尝试过的脚本:
string document = File.ReadAllText(@"FilePath.cs");
var searchPatternID = @"(?<![\p{Zs}\t]*//.*)(?<!/\*(?:(?!\*/)[\s\S\r])*?)\[[\n\r\s]*ID(.*?\n*?)*?\]";
var matches = Regex.Matches(document, searchPatternID );
foreach (var m in matches)
{
Console.WriteLine(m);
}
这里我只搜索ID。如何获得“quack”的值?
我的期望:
[ID(12345678)]
public string quack {get; set}
public string wuff {get; set}
在这里,我希望 quack 的值与 ID 一起出现。
【问题讨论】:
-
您确定要搜索 *.cs 文件吗?这些在分发后不可用。您可能想使用反射来搜索属性/属性,请参阅此处如何检查属性的属性:stackoverflow.com/a/2051116/4035472。
标签: c# reflection properties attributes