c# 怎么获取方法注释信息
为了使用C#提供的XML注释功能,注释应该使用特殊的注释语法(///)开头。在///之后,你可以使用预先定义的标签注释你的代码,也可以插入自己定义的标签。定制的标签将会在随后加入到生成的注释文档中。
<Summary> 对整体进行概要性描述
<summary>Description</summary>
类、属性(不推荐)、方法等
<para> 跟在Summary之后,对方法所涉及的入口参数进行有效的解释
<param name=username>本参数是用户的帐号</param>
方法的入口参数;
<returns> 对方法的返回值进行解释;
<returns>返回值零代表操作成功,-1代表操作不成功</returns>
方法的返回值;
<remarks> 对一些语句进行备注性描述
<remarks>本类需要调用另外一个User类相关方法</remarks>
类、方法、属性等;
<see> 在生成的文档中产生一个连接到其它描述的超链接;
<see cref=”[member]”/>
可以在其它注释标识符中加入
<seealso> 与上者的区别是本标识符显示超链接在一个文档的尾部的“See Also”区域,而前者在文档之中;
<seealso cref=”[member]”/>
不可以在其它注释标识符中加入
<value> 对一个属性进行概要性解释;
<value>这是一个public属性</value>
属性
<code> 如果需要置入一部分源代码段,可以使用本标识符将其标记出来
<code>
public int add(int a,b)
{return a+b;
}
</code>
可以在其它注释标识符中加入
<exception> 对程序中可能抛出的异常做解释;
<exception cref=”System.Exception”>抛出的异常情况</exception>
在方法当中如果有抛出异常,如“try…catch结构”时可以使用本标识符做解释
<permission> 对方法的访问权限做一些解释:
<permission cref=”System.Security.PermissionSet”>这是公共方法</permission>
方法,属性
<c> 与<code>标识符基本相同,但本标识符仅用于单行代码;
<c>return a+b;</c>
可以在其它标识符中插入使用;
<example> 举例说明,通常与<code>配套使用;
<example> 以下示例说明如何调用Add方法:
<code>
class MyClass
{
public static int Main()
{
return Add(1+2);
}
}
</code>
</example>
可以在其它标识符中插入;
<paramref> 在其它地方引用一个入口参数
<paramref cref=”a”>请注意,这是一个整型参数</paramref>
using System;
/// <summary>
/// ClassName:SomeClass
/// Version:1.0
/// Date:2001/6/21
/// Author:cniter
/// </summary>
/// <remarks>
/// 本类仅是一个示例教学类,不完成具体的工作
/// </remarks>
public class SomeClass
{
/// <summary>
/// 内部私有变量,存储名称</summary>
private string myName = null;
public SomeClass()
{
//
// TODO: Add Constructor Logic here
//
}
/// <summary>
/// 名称属性 </summary>
/// <value>
///本属性为只读属性,返回用户名</value>
public string Name
{
get
{
if ( myName == null )
{
throw new Exception("Name is null");
}
return myName;
}
}
/// <summary>
/// 本方法是没有进行具体构建</summary>
/// <param name="s"> 入口参数S是一个String类型</param>
/// <seealso cref="String">
///String类型的信息</seealso>
public void SomeMethod(string s)
{
}
/// <summary>
/// 本方法仍然没有进行具体构建</summary>
/// <returns>
/// 返回值始终为0.</returns>
/// <seealso cref="SomeMethod(string)">
/// 参看SomeMethod(string)方法的说明 </seealso>
public int SomeOtherMethod()
{
return 0;
}
/// <summary>
/// 该应用程序的入口
/// </summary>
/// <param name="args"> 入口参数集合</param>
public static int Main(String[] args)
{
//
// TODO: Add code to start application here
//
return 0;
}
}
PropertyInfo[] peroperties = typeof(TEST).GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo property in peroperties)
{
object[] objs = property.GetCustomAttributes(typeof(DescriptionAttribute), true);
if (objs.Length > 0)
{
Console.WriteLine("{0}: {1}", property.Name, ((DescriptionAttribute)objs[0]).Description);
}
}
Console.ReadKey();
class TEST
{
[Description("a")]
public string X
{
get { return null; }
}
}