Beachten Sie, dass XML-Kommentare werden nicht in resultierende exe/dll-Datei enthalten, so dass Sie benötigen XML-Datei Generation ermöglichen und verteile sie auch. Consder verwendet Attribute, um runtime verfügbare Informationen über Ihre Eigenschaften/Methoden/Klassen/etc bereitzustellen, da XML-Kommentare wahrscheinlich nicht für das gedacht waren, was Sie versuchen zu tun.
Wie auch immer, XML-Kommentare haben folgendes Format:
<?xml version="1.0"?>
<doc>
<assembly>
<name><!-- assembly name here --></name>
</assembly>
<members>
<!-- ... -->
<member name="M:Full.Type.Name.PropertyName">
<summary>
<!-- property summary here -->
</summary>
</member>
<!-- ... -->
</memebers>
</doc>
Also, wenn Sie es immer noch wollen, müssen Sie Ihre XML-Kommentare Datei laden und XML-Knoten zu finden, Ihre Immobilie (ungetestet Kode, nur Ansatz zeigen,):
var a = new MyObject();
var t = a.GetType().GetProperty("City");
string xmlMemberName = "M:" + a.FullName + t.Name;
var xmlDoc = new XmlDocument();
xmlDoc.Load("you_xml_comments_file.xml");
var membersNode = xmlDoc.DocumentElement["members"];
string summary = "";
if(membersNode != null)
{
foreach(XmlNode memberNode in membersNode.ChildNodes)
{
if(memberNode.Attributes["name"].Value == xmlMemberName)
{
summary = memberNode["summary"].InnerText;
break;
}
}
}
Console.WriteLine(summary);
Update: Sie können auch Ihre XML-Kommentare Datei als Ressource eingebettet, so dass Sie es nie verteilen werden vergessen, oder sogar ein kleines Tool schreiben, die XML-Kommentare Datei in .resx verwandelt XML reso Urces-Datei.
Incuding XML-Kommentare Datei als eingebettete Ressource:
- XML-Datei Generation in Projekteigenschaften
- Satz XML-Ausgabedatei Pfad ermöglichen Verzeichnis zu projizieren (statt bin/Veröffentlichung oder bin/Debug)
- Kompilierung Projekt
- in Projekt-Explorer „alle Dateien anzeigen“ aktivieren und inlude xML-Datei
- offene Dateieigenschaften erzeugt ein nd gesetzt Build Aktion "Embedded Resource"
jetzt Ihre XML-Kommentare werden in der Montage-Datei enthalten als Ressource ein können auf diese Weise geladen werden:
XmlDocument doc;
using(var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(
"your_default_namespace" + "." + "your_xml_file_name.xml"))
{
doc.Load(stream);
}
Um .resx von Kommentaren XML-Datei zu generieren:
.resx Format:
<root>
<!-- some header stuff which can be copy-pasted from any other valid .resx -->
<!-- ... -->
<data name="Your_Object_Full_Name_PropertyName" xml:space="preserve">
<value><!-- summary here --></value>
</data>
<!-- ... -->
</root>
Strings können geladen werden von dieser .resx mit ResourceManager
Klasse.
Wenn Sie dies in Ihrer ASP.NET-Website unter IIS Express verwenden, stellen Sie sicher, dass Sie den Pfad manuell erkennen. Wenn Sie auf enum ausgerichtet sind, sollten Sie GetMember verwenden. Beispiel: var path = Server.MapPath ("~/bin /" + typeof (YourEnumType) .Assembly.GetName(). Name + ". Xml"); var str = typeof (YourEnumType) .GetMember ("EnumMemberName") [0] .GetXmlDocumentation (Pfad); – kape123