質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

1467閲覧

プロジェクト内のメソッドとプロパティを(できればソースのファイル名と行数込みで)一覧にしたいです。

meshkit

総合スコア72

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2018/03/01 05:02

前提・実現したいこと

プロジェクト内のメソッドとプロパティを(できればソースのファイル名と行数込みで)一覧にしたいです。
単独のクラスなら、下記コードでできそう。
複数ある場合の引数typeでclassを作る方法を教えてください。

発生している問題・エラーメッセージ

typeをclassにできない。

該当のソースコード

C#

1 public static string GetData() 2 { 3 string result = string.Empty; 4 //コードを実行しているアセンブリを取得する 5 Assembly assembly = Assembly.GetExecutingAssembly(); 6 7 //アセンブリで定義されている型をすべて取得する 8 Type[] types = assembly.GetTypes(); 9 10 //型の情報を表示する 11 foreach (Type t in types) 12 { 13 Console.WriteLine("名前:{0}", t.Name); 14 Console.WriteLine("名前空間:{0}", t.Namespace); 15 Console.WriteLine("完全限定名:{0}", t.FullName); 16 Console.WriteLine("このメンバを宣言するクラス:{0}", t.DeclaringType); 17 CheckClass(t.DeclaringType); 18 19 Console.WriteLine("直接の継承元:{0}", t.BaseType); 20 Console.WriteLine("属性:{0}", t.Attributes); 21 } 22 return result; 23 } 24 25 private static void CheckClass(Type type) 26 { 27 // Sample クラスの Test_xxxx メソッドをすべて呼び出す。 28 var sample = new Sample(); 29 sample.GetType().GetMethods() 30 //.Where(m => m.Name.StartsWith("Test_")) 31 .ForEach(m => m.Invoke(sample, null)); 32 }

補足情報(FW/ツールのバージョンなど)

Visual Studio2015 Pro
C#のプロジェクト。
ソリューションエクスプローラーのクラスビューで一覧できるものの、テキストでないので。
一覧のテキストが欲しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

C#

1object sample = Activator.CreateInstance(type);

Activator.CreateInstance メソッド (Type)

###追記
ファイル名・行番号の取得には次を使います。
StackFrame クラス

あるいは Roslyn で検索すると構文解析の方法が見つかると思います。

投稿2018/03/01 05:14

編集2018/03/01 05:20
Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meshkit

2018/03/01 06:20

なんか、typeがnullだったりして、なかなか思うようになりませんでした。 ま、これは断念。 ありがとうございました。
Zuishin

2018/03/01 10:08

null になるわけ……と思ってよく見たら DeclaringType のせいです。 これはクラスの中でクラスを宣言した時に内側のクラスから外側のクラスを参照するものなのでネストしないクラスの場合は null になります。 CheckClass(t.DeclaringType); を CheckClass(t); に書き換えてください。
meshkit

2018/03/02 01:54

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問