私はプロジェクトを持っています。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
設計時に話している場合は、次のいずれかを見ています。
実行時に話している場合は、次の1つ以上のメソッド/クラスを介して.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.