C# 获取项目中的所有公共方法
我有一个项目。c#net 我想获得项目中所有公共类中所有公共函数的名称C# 获取项目中的所有公共方法,c#,public-method,C#,Public Method,我有一个项目。c#net 我想获得项目中所有公共类中所有公共函数的名称 是否有任何工具或我可以编写一个程序,将项目dll甚至项目目录作为输入,并查找所有公共函数?这可能正是您想要的: MethodInfo[] methods = AppDomain.CurrentDomain.GetAssemblies().SelectMany(x => x.GetTypes()).SelectMany(x => x.GetMethods().Where(y => y.IsPublic)).T
是否有任何工具或我可以编写一个程序,将项目dll甚至项目目录作为输入,并查找所有公共函数?这可能正是您想要的:
MethodInfo[] methods = AppDomain.CurrentDomain.GetAssemblies().SelectMany(x => x.GetTypes()).SelectMany(x => x.GetMethods().Where(y => y.IsPublic)).ToArray();
出于好奇,您打算用这些信息做什么?如果您在设计时谈论,那么您将看到以下内容之一:
如果您谈论的是在运行时,那么您正在考虑通过以下一个或多个方法/类使用.NET反射:
AppDomain.CurrentDomain.GetAssemblys()//返回加载的程序集(即DLL)。
myAssembly.GetTypes()//返回类型的数组。
myType.GetMethods()//返回MethodInfo的数组。
您可以使用System.Reflection.MethodInfo找到它 假设您有一个在接口中具有以下方法的类:
public interface IFaceOne {
void MethodA();
}
public interface IFaceTwo {
void MethodB();
}
public class MyClass: IFaceOne, IFaceTwo {
public int myIntField;
public string myStringField;
private double myDoubleField = 0;
public double getMyDouble(){
return myDoubleField;
}
public void myMethod(int p1, string p2)
{
}
public int MyProp
{
get { return myIntField; }
set { myIntField = value; }
}
public void MethodA() {}
public void MethodB() {}
}
然后使用以下代码读取所有方法/属性:
public static void Main(string[] args)
{
TheType.MyClass aClass = new TheType.MyClass();
Type t = aClass.GetType();
MethodInfo[] mi = t.GetMethods();
foreach(MethodInfo m in mi)
Console.WriteLine("Method: {0}", m.Name);
}
您将得到以下结果:方法:getMyDouble
方法:myMethod
方法:获取_MyProp
方法:设置_MyProp
方法:方法A
方法:方法B
方法:ToString
方法:等于
方法:GetHashCode
方法:GetType
实际上我要运行efprofiler。所以我想把所有的方法名称都打印在一张纸上。我会标记每个方法通过efprofiler测试:(但是你的答案都没有帮助(除了DuckMaestro的第二个)