通过反射来发现一个方法是否使用了任何特定的方法

本文关键字:方法 是否 任何特 一个 反射 发现 | 更新日期: 2023-09-27 17:54:03

我有一个有一些类的dll,这些类有一些方法。其中一些方法内部有另一个方法调用

如何检查类中的方法是否具有特定的方法。我对此做了一些谷歌搜索,我能够找到dll内的类如下:

public List < string > GetClassFromDlLstring(string dllName)
{
    Assembly assemblies = null;
    try
    {
        assemblies = Assembly.LoadFrom(dllName);
    }
    catch (Exception ex)
    {
    }
    var allTypes = assemblies.GetTypes();
    return (from allType in allTypes where allType.IsClass select allType.ToString()).ToList();
}

查找类中所有方法的方法如下:

public List <string> GetAllTMethodClass(string dllName, string className)
{
    var assemblies = Assembly.LoadFrom(dllName);
    Type type = assemblies.GetType(className);
    var temp = new List <string> ();
    try
    {
        MethodInfo[] methods = type.GetMethods();
        //MethodInfo[] methods = type.GetMethods(BindingFlags.Instance);
        foreach(MethodInfo meth in methods)
        {
            if (meth.MemberType == MemberTypes.Method && meth.MemberType != MemberTypes.Property) 
                temp.Add(meth.Name);
        }
    }
    catch (Exception ex)
    {
    }
    return temp;
}

我现在有一个问题,上面的函数也返回属性名称。
进一步,我想遍历函数列表并检查函数是否包含特定的函数。我怎样才能做到这一点呢?

编辑1:

我发现了类似的帖子,链接在下面
-查看是否使用反射在方法内部调用方法
获取c#方法体中使用的类型

通过反射来发现一个方法是否使用了任何特定的方法

您必须查看方法的IL. IMO, Mono。Cecil是最好的方法。