获取项目中的所有公共方法

时间:2011-03-10 06:15:34

标签: c# public-method

我有一个项目。 c#.net 我想获得项目中所有公共类的所有公共函数的名称。

是否有任何工具或者我可以编写一个程序,将项目dll甚至项目目录作为输入,并找到所有公共函数?

3 个答案:

答案 0 :(得分:7)

这可能会做你想要的:

MethodInfo[] methods = AppDomain.CurrentDomain.GetAssemblies().SelectMany(x => x.GetTypes()).SelectMany(x => x.GetMethods().Where(y => y.IsPublic)).ToArray();

出于好奇,你有什么打算使用这个信息?

答案 1 :(得分:1)

您可以使用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
方法:方法A 方法:方法B
方法:ToString
方法:等于
方法:GetHashCode
方法:GetType

答案 2 :(得分:0)

如果您在设计时谈论,那么您正在考虑以下其中一项:

  1. 编写自己的源代码解析器。
  2. 编写自己的或找到第三方视觉工作室插件。
  3. 编译然后在.NET Reflector
  4. 等工具中加载DLL

    如果您在运行时谈论,那么您正在考虑使用.NET反射,通过以下一个或多个方法/类:

    1. AppDomain.CurrentDomain.GetAssemblies() // returns loaded Assemblies (i.e. DLLs).
    2. myAssembly.GetTypes() // returns an array of Type's.
    3. myType.GetMethods() // returns an array of MethodInfo's.
相关问题