我有一个定义了一些公共属性(get和set)的类。在这个类中,有一些函数,我需要找到一种方法来判断给定的属性是否在类中设置,无论是在哪里设置的。
例如,假设我们有一个名为P1的属性:
Public string P1
{
get;set;
}现在,我需要判断这个属性是否在相等操作(赋值)左侧的类中至少放置了一次。
因此,如果这个类中至少有一行包含: P1="blah bla...",我需要得到是的答案。
这不是特定于类实例的东西,我需要一些遍历类代码的东西(也许代码分析?)帮我侦测这个。
我读到过关于CodeDom的文章,它似乎是构建/解析类文件的东西。我需要的是检查代码并提取出来,而不是构建一个文件。
发布于 2015-03-31 23:58:59
如果不能选择Roslyn,您可以使用反射来获取目标类的所有构造函数和方法(包括getter和setter),然后调用GetMethodBody().GetILAsByteArray()来获取它们的MSIL代码,最后对于找到的每个赋值调用Module.ResolveMember(token)来验证该标记是否表示您正在寻找的PropertyInfo。
发布于 2015-03-31 23:12:40
尝试获取当前的StackTrace。然后,您可以解析给定的数据。
private int t1;
public int T1
{
get { return t1; }
set
{
t1 = value;
Debug.WriteLine(new System.Diagnostics.StackTrace());
}
}https://stackoverflow.com/questions/29367722
复制相似问题