簡體   English   中英

是否可以在運行時獲取類摘要?

[英]Is it possible to obtain class summary at runtime?

是否可以在C#中在運行時獲取類摘要? 我想通過反射獲取課程摘要,然后將其寫入控制台。 通過類摘要我的意思是在類定義之前的摘要注釋,如下所示:

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

我不知道在編譯代碼后這些注釋是否可用,但如果它們可能有一種方法可以在代碼中獲取它們。

在此先感謝您的幫助。

我曾經一度搞砸了這個,並使用了這個家伙解決方案。 工作得很好:

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

我在CodePlex上維護了Jolt.NET項目,並實現了執行此任務的功能。 有關更多信息,請參閱Jolt庫。

從本質上講,庫允許您使用System.Reflection的元數據類型(即MethodInfoPropertyInfo等)以編程方式查找和查詢程序集的XML doc注釋文件。

不,他們通過反思無法獲得。 msdn

XML文檔注釋不是元數據; 它們不包含在已編譯的程序集中,因此無法通過反射訪問它們。

您無法在運行時訪問它們,因為它們被編譯器視為注釋。

但是,如果您想使用屬性來指定信息並在運行時通過反射訪問它,您可以這樣做。

有關運行時訪問,請參閱創建屬性創建的自定義屬性(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...
}

如果發出XML文檔文件,則可以。 該過程將涉及使用反射來獲取該類型的所有公共成員,然后使用XPath,從生成的XML文檔中讀取文檔。

更新:在您的dll / exe中包含XML文檔,只需將其添加為嵌入式資源,如果文檔更改,則編譯兩次。

不,這些注釋不包含在已編譯的程序集中。

Visual Studio可以在包含這些注釋的輸出文件夾(\\ bin \\ your_project.xml)中創建.xml文件。 如果您的應用程序與該xml文件一起分發,那么您將能夠以編程方式訪問它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM