[英]Is it possible to obtain class summary at runtime?
是否可以在C#中在運行時獲取類摘要? 我想通過反射獲取課程摘要,然后將其寫入控制台。 通過類摘要我的意思是在類定義之前的摘要注釋,如下所示:
/// <summary>
/// some description
/// </summary>
class SomeClass
{
}
我不知道在編譯代碼后這些注釋是否可用,但如果它們可能有一種方法可以在代碼中獲取它們。
在此先感謝您的幫助。
我曾經一度搞砸了這個,並使用了這個家伙解決方案。 工作得很好:
不,他們通過反思無法獲得。 見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.