C# 反射以查找方法是否使用任何特定方法
我有一个dll,它有一些类,这些类有一些方法。 其中一些方法内部还有另一个方法调用 如何检查类中的方法是否具有特定的方法。 我用谷歌搜索了一下,在dll中找到了如下类:C# 反射以查找方法是否使用任何特定方法,c#,reflection,C#,Reflection,我有一个dll,它有一些类,这些类有一些方法。 其中一些方法内部还有另一个方法调用 如何检查类中的方法是否具有特定的方法。 我用谷歌搜索了一下,在dll中找到了如下类: public List < string > GetClassFromDlLstring(string dllName) { Assembly assemblies = null; try { assemblies = Assembly.LoadFrom(dllName);
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,这是最好的方法。谢谢您的回复。你能给我提供一些链接吗?