to get all public methods in the project
i have a project. c# .net I would like to get names of all public function in all public classes in the project.
is there any tool or can i write a program that take the project dll or even the project directory ,as in开发者_C百科put ,and find all public function?
This probably does what you want:
MethodInfo[] methods = AppDomain.CurrentDomain.GetAssemblies().SelectMany(x => x.GetTypes()).SelectMany(x => x.GetMethods().Where(y => y.IsPublic)).ToArray();
Out of curiosity, what are you plans with this info?
You can find it by using System.Reflection.MethodInfo
Lets say you have a class with following methods in interfaces:
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() {}
}
Then use following code to read all methods/properties:
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);
}
You would get following result:
Method: getMyDouble
Method: myMethod
Method: get_MyProp
Method: set_MyProp
Method: MethodA
Method: MethodB
Method: ToString
Method: Equals
Method: GetHashCode
Method: GetType
If you're talking about at design-time, then you're looking at one of the following:
- Writing your own source code parser.
- Writing your own or finding a 3rd party visual studio plugin.
- Compiling then loading the DLL in a tool such as .NET Reflector.
If you're talking about at run-time, then you're looking at using .NET reflection, through one or more of the following methods/classes:
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.
精彩评论