我一直在努力解决这个问题。我试图做的是构建一个“ map ”,说明对象在我正在处理的一些代码中的使用方式。将其视为增强的 Find Usages。展示这一点的最简单方法是通过示例:
public class MasterClass
{
Type1 type1;
Type2 type2;
Type3 type3;
void InitializeData()
{
type1 = new Type1(this);
type2 = new Type2(this);
type3 = new Type3(this);
}
}
public class Type1
{
private MasterClass _master;
public Type1(MasterClass master)
{
_master = master;
}
public void Something()
{
//use _master.type2 and _master.type3 here
}
}
public class Type2
{
private MasterClass _master;
public Type2(MasterClass master)
{
_master = master;
}
public void Something()
{
//use _master.type3 here
}
}
public class Type3
{
private MasterClass _master;
public Type3(MasterClass master)
{
_master = master;
}
public void Something()
{
//use _master.type1 and _master.type2 here
}
}
我想要做的是获取一个映射或报告,在示例的情况下,它会给出如下内容:
Type1 被使用:{Type3}
Type2 被使用:{Type1, Type3}
Type3 被使用:{Type1, Type2}
如果我能把它写进字典,那我就回家了。 :-)
我尝试过的:
我已经尝试检查程序集、每种类型、每种方法,然后提取 IL 数组,然后尝试解析操作数,但没有成功。我什至尝试过使用一些正则表达式检查源文件,但我有数千个类要检查,以几种不同的风格编写,这意味着我会遗漏一些引用。
我可以使用 Reflector &&/|| Resharper 一次获取一个引用,但我想一次获取所有引用。
有什么建议吗?
最佳答案
我建议使用 NDepend为此,因为它是针对您所描述的问题量身定制的。在代码中执行此操作需要大量工作。
关于c# - .NET 反射 : Find used types,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1975702/