我有一个项目。c# .net 我想获取项目中所有公共类中所有公共函数的名称。
是否有任何工具或者我可以编写一个将项目 dll 甚至项目目录作为输入并找到所有公共功能的程序?
我有一个项目。c# .net 我想获取项目中所有公共类中所有公共函数的名称。
是否有任何工具或者我可以编写一个将项目 dll 甚至项目目录作为输入并找到所有公共功能的程序?
这可能做你想要的:
MethodInfo[] methods = AppDomain.CurrentDomain.GetAssemblies().SelectMany(x => x.GetTypes()).SelectMany(x => x.GetMethods().Where(y => y.IsPublic)).ToArray();
出于好奇,您对这些信息有什么计划?
您可以使用 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
方法:get_MyProp
方法:set_MyProp
方法:MethodA
方法:MethodB
方法:ToString
方法:Equals
方法:GetHashCode
方法:GetType
如果您在设计时谈论,那么您正在查看以下内容之一:
如果您在运行时谈论,那么您正在考虑通过以下一种或多种方法/类使用 .NET 反射:
AppDomain.CurrentDomain.GetAssemblies() // returns loaded Assemblies (i.e. DLLs).
myAssembly.GetTypes() // returns an array of Type's.
myType.GetMethods() // returns an array of MethodInfo's.