Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 反射以查找方法是否使用任何特定方法_C#_Reflection - Fatal编程技术网

C# 反射以查找方法是否使用任何特定方法

C# 反射以查找方法是否使用任何特定方法,c#,reflection,C#,Reflection,我有一个dll,它有一些类,这些类有一些方法。 其中一些方法内部还有另一个方法调用 如何检查类中的方法是否具有特定的方法。 我用谷歌搜索了一下,在dll中找到了如下类: public List < string > GetClassFromDlLstring(string dllName) { Assembly assemblies = null; try { assemblies = Assembly.LoadFrom(dllName);

我有一个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;
}
public ListGetClassFromDlLstring(string-dllName)
{
Assembly=null;
尝试
{
assemblies=Assembly.LoadFrom(dllName);
}
捕获(例外情况除外)
{
}
var allTypes=assemblies.GetTypes();
返回(从allType中的allType返回,其中allType.IsClass选择allType.ToString()).ToList();
}
类似地,一个查找类中所有方法的方法如下所示:

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;
}
public List GetAllTMethodClass(字符串dllName,字符串className)
{
var assemblies=Assembly.LoadFrom(dllName);
类型类型=assemblies.GetType(类名称);
var temp=新列表();
尝试
{
MethodInfo[]methods=type.GetMethods();
//MethodInfo[]methods=type.GetMethods(BindingFlags.Instance);
foreach(方法中的MethodInfo meth)
{
if(meth.MemberType==MemberTypes.Method&&meth.MemberType!=MemberTypes.Property)
临时添加(方法名称);
}
}
捕获(例外情况除外)
{
}
返回温度;
}
我现在有一个问题,上面的函数也返回属性名。
此外,我想浏览函数列表,检查函数是否包含特定函数。我怎样才能做到这一点

编辑1: 我找到了类似的帖子,链接如下
-

-您必须查看方法的IL。IMO,这是最好的方法。

谢谢您的回复。你能给我提供一些链接吗?