4

我有一个 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# 方法体内使用的类型

4

1 回答 1

4

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

于 2013-01-18T10:32:18.667 回答