none
インテリセンスで出てくる情報を実行プログラムで利用する方法 RRS feed

  • 質問

  • お世話になっております。

    VB.NETやC#.NETでおなじみのインテリセンス機能は
    どのように情報を抽出してきているのでしょうか?

    VB.NETやC#.NET自身も、.NET Frameworkを利用したプログラムの一種と考えると
    どのような.NET Frameworkのクラスを利用して
    コーディング中のクラスのメンバー一覧や説明を取得しているかご存知ありますか?

    もし次のような機能を一般ユーザからも利用できると、自作の仕様書を作成するときなどに重宝すると思います。
    ・名前空間名を与えると(モジュールを読み込んでおくか、指定する必要はあると思いますが)
     下位の名前空間名やクラス名、インターフェイス名の一覧を取得できる。
    ・クラス名やインターフェイス名を指定すると
     説明やメンバー一覧、メンバーの属性(Static,Shared,MustInherit,Abstractなど)、継承元クラス名などを取得できる。
    ・クラスのメンバー名を指定すると
     説明や型、引数一覧などを取得できる。


    ずばりでなくても、何か情報をお寄せいただけますと幸いです。
    宜しくお願い致します。
    2009年5月10日 8:55

回答

  • 何らかの便利なインターフェースがあるかどうかは存じません。
    (私が知らないだけです。「MVPが知らないから、ないんだろう」って思わないようにお願いします)


    .NET Frameworkのクラス群で表示される情報は下記のようなフォルダにXMLファイルとして配置されています。
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\JA
    C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\ja
    C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\ja

    >・名前空間名を与えると(モジュールを読み込んでおくか、指定する必要はあると思いますが)
    > 下位の名前空間名やクラス名、インターフェイス名の一覧を取得できる。
    同じ名前空間といっても、複数のアセンブリで構成されるケースもあるので、列挙できるかどうかは分かりません。

    >・クラス名やインターフェイス名を指定すると
    > 説明やメンバー一覧、メンバーの属性(Static,Shared,MustInherit,Abstractなど)、継承元クラス名などを取得できる。
    >・クラスのメンバー名を指定すると
    > 説明や型、引数一覧などを取得できる。
    説明以外はリフレクションで情報を集められそうな感じがしますね。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答としてマーク DEKOCHAN 2009年5月19日 1:28
    2009年5月10日 9:30
    モデレータ
  • 目的が仕様書作成ならばsandcastleというツールを調べてみるといいかも。
    (コード中のXMLコメントとアセンブリからドキュメントを生成してくれます)
    • 回答としてマーク DEKOCHAN 2009年5月19日 1:28
    2009年5月11日 10:27

すべての返信

  • 何らかの便利なインターフェースがあるかどうかは存じません。
    (私が知らないだけです。「MVPが知らないから、ないんだろう」って思わないようにお願いします)


    .NET Frameworkのクラス群で表示される情報は下記のようなフォルダにXMLファイルとして配置されています。
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\JA
    C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\ja
    C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\ja

    >・名前空間名を与えると(モジュールを読み込んでおくか、指定する必要はあると思いますが)
    > 下位の名前空間名やクラス名、インターフェイス名の一覧を取得できる。
    同じ名前空間といっても、複数のアセンブリで構成されるケースもあるので、列挙できるかどうかは分かりません。

    >・クラス名やインターフェイス名を指定すると
    > 説明やメンバー一覧、メンバーの属性(Static,Shared,MustInherit,Abstractなど)、継承元クラス名などを取得できる。
    >・クラスのメンバー名を指定すると
    > 説明や型、引数一覧などを取得できる。
    説明以外はリフレクションで情報を集められそうな感じがしますね。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答としてマーク DEKOCHAN 2009年5月19日 1:28
    2009年5月10日 9:30
    モデレータ
  • 目的が仕様書作成ならばsandcastleというツールを調べてみるといいかも。
    (コード中のXMLコメントとアセンブリからドキュメントを生成してくれます)
    • 回答としてマーク DEKOCHAN 2009年5月19日 1:28
    2009年5月11日 10:27
  • Azulean様 C.John様

    遅くなり申し訳御座いません。
    ご教示どうも有り難う御座います。

    まず、リフレクション(System.Reflection.Assemblyのインスタンス)などから
    System.Type を得ることで、
    クラスやインターフェイスの継承不可などの属性や基底クラス、メンバー一覧など
    いろいろ調べられるのですね。

    Sandcastle はまだ試していないのですが、
    MSDNライクに仕様書が出来るのは格好良いですね。
    http://d.hatena.ne.jp/Wacky/20070108/1168237297

    お蔭様で
    手がかりをつかむことが出来ました。

    2009年5月19日 1:30
  • Azulean様 C.John様

    遅くなり申し訳御座いません。
    ご教示どうも有り難う御座います。

    まず、リフレクション(System.Reflection.Assemblyのインスタンス)などから
    System.Type を得ることで、
    クラスやインターフェイスの継承不可などの属性や基底クラス、メンバー一覧など
    いろいろ調べられるのですね。

    Sandcastle はまだ試していないのですが、
    MSDNライクに仕様書が出来るのは格好良いですね。
    http://d.hatena.ne.jp/Wacky/20070108/1168237297

    お蔭様で
    手がかりをつかむことが出来ました。

    2009年5月19日 1:30