检查一个方法是否使用了特定的方法——反射

4

我有一个包含一些类的dll文件,这些类中有一些方法。这些方法中有一些又调用了其他方法。

如何检查类中的某个方法是否有特定的方法?我已经通过Google找到了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#方法体中使用的类型

1个回答

4

你需要查看方法的IL。在我看来,Mono.Cecil是最好的方法。


谢谢您的回复。您能给我提供一些链接吗? - शेखर

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接