17

C#で実行時にクラスの概要を取得することは可能ですか? リフレクションを通じてクラスの概要を取得し、それをコンソールに書き込みたいと思います。クラスの要約とは、クラス定義の前の要約コメントを意味します。次のようなものです。

/// <summary>
/// some description
/// </summary>
class SomeClass
{
}

これらのコメントがコードのコンパイル後に利用できるかどうかはわかりませんが、利用できる場合は、コードでそれらを取得する方法があるかもしれません。

助けてくれてありがとう。

4

6 に答える 6

6

私はかつてこれを台無しにして、この男の解決策を使用しました。かなりうまくいった:

http://jimblackler.net/blog/?p=49

于 2009-02-26T20:00:03.553 に答える
3

いいえ、リフレクションでは利用できません。msdnを参照してください:

XML ドキュメント コメントはメタデータではありません。それらはコンパイルされたアセンブリに含まれていないため、リフレクションを介してアクセスすることはできません。

于 2009-02-26T19:58:09.363 に答える
3

これらはコンパイラによってコメントと見なされるため、実行時にアクセスすることはできません。

ただし、属性を使用して情報を指定し、実行時にリフレクションを介してアクセスしたい場合は、それを行うことができます。

属性の作成については「カスタム属性の作成 (C# プログラミング ガイド)」を、ランタイム アクセスについては「リフレクションを使用した属性へのアクセス (C# プログラミング ガイド)」を参照してください。

MSDN の例:

Author.cs:

public class Author : System.Attribute
{
    private string name;
    public double version;

    public Author(string name)
    {
        this.name = name;
        version = 1.0;
    }
}

SampleClass.cs:

[Author("H. Ackerman", version = 1.1)]
class SampleClass
{
    // H. Ackerman's code goes here...
}
于 2009-02-26T19:59:29.297 に答える
1

XML ドキュメント ファイルを発行する場合は、可能です。このプロセスでは、リフレクションを使用して型のすべてのパブリック メンバーを取得し、次に XPath を使用して、生成された XML ドキュメントからドキュメントを読み取ります。

更新: XML ドキュメントを dll/exe に含めるには、それを埋め込みリソースとして追加し、ドキュメントが変更された場合は 2 回コンパイルします。

于 2009-02-26T19:57:45.277 に答える
0

いいえ、これらのコメントはコンパイルされたアセンブリには含まれません。

Visual Studio は、これらのコメントを含む .xml ファイルを出力フォルダー (\bin\your_project.xml) に作成できます。アプリケーションがその xml ファイルと一緒に配布されている場合は、プログラムでアクセスできます。

于 2009-02-26T19:58:25.070 に答える