栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

C#反射并找到所有引用

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#反射并找到所有引用

为了找出使用方法的

MyClass.Foo()
位置,您必须分析所有对包含的程序集的引用的程序集的所有类
MyClass
。我写了一个简单的概念证明,以证明这段代码的样子。在我的示例中,我使用了由Jb
Evain编写的该库(只是一个.cs文件):

我写了一点测试课来分析:

public class TestClass{    public void Test()    {        Console.WriteLine("Test");        Console.Write(10);        DateTime date = DateTime.Now;        Console.WriteLine(date);    }}

我编写了这段代码,以打印出其中使用的所有方法

TestClass.Test()

Methodbase methodbase = typeof(TestClass).GetMethod("Test");var instructions = MethodBodyReader.GetInstructions(methodbase);foreach (Instruction instruction in instructions){    MethodInfo methodInfo = instruction.Operand as MethodInfo;    if(methodInfo != null)    {        Type type = methodInfo.DeclaringType;        ParameterInfo[] parameters = methodInfo.GetParameters();        Console.WriteLine("{0}.{1}({2});", type.FullName, methodInfo.Name, String.Join(", ", parameters.Select(p => p.ParameterType.FullName + " " + p.Name).ToArray())        );    }}

它给了我以下输出:

System.Console.WriteLine(System.String value);System.Console.Write(System.Int32 value);System.DateTime.get_Now();System.Console.WriteLine(System.Object value);

这个示例显然还远远不够完整,因为它不处理ref和out参数,也不处理通用参数。我相信那也忘记了其他细节。它只是表明可以做到。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/576081.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号