【发布时间】:2009-12-29 17:04:31
【问题描述】:
我一直在努力解决这个问题。我正在尝试做的是在我正在处理的一些代码中构建对象如何使用的“地图”。将其视为增强的 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 数组,然后尝试解析操作数,但没有成功。我什至尝试过使用一些正则表达式查看源文件,但我有数千个类要查看,它们以几种不同的风格编写,这意味着我会错过一些参考。
我可以使用反射器 &&/|| Resharper 一次获得一个参考,但我想一次获得所有参考。
有什么建议吗?
【问题讨论】:
-
完成这项工作的反射器插件是否足够?
-
您想以编程方式还是仅使用工具来实现这一目标?
-
C# 是一种编程语言。它没有反射。那是 .NET。
-
我不在乎 :-) 如果有工具可以做到这一点,太好了!如果我必须自己动手,那就这样吧。
-
看看 FXCop。这可以提供一些关于程序集的依赖信息。
标签: c# .net reflection