提个菜鸟级别的问题:Attributes到底是什么意思啊 我看书看了好久都没看懂,哪位高手帮忙解释一下,最好附点简单的代码,好看懂 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 // AttributesTutorial.cs// 此示例显示类和方法属性的用法。using System;using System.Reflection;using System.Collections;// IsTested 类是一个用户定义的自定义属性类。// 它可应用于任何声明,包括// - 类型(结构、类、枚举、委托)// - 成员(方法、字段、事件、属性、索引器)// 它在使用时不带参数。public class IsTestedAttribute : Attribute{ public override string ToString() { return "Is Tested"; }}// AuthorAttribute 类是一个用户定义的属性类。// 它仅可应用于类和结构声明。// 它带有一个未命名的字符串参数(作者的姓名)。// 还带有一个可选的命名参数 Version,其类型是 int。[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]public class AuthorAttribute : Attribute{ // 此构造函数指定属性类的未命名参数。 public AuthorAttribute(string name) { this.name = name; this.version = 0; } // 该属性为只读(它没有 set 访问器) // 因此它不能用作此属性的命名参数。 public string Name { get { return name; } } // 该属性为读写(它具有 set 访问器) // 因此当将此类用作属性类时 // 它可用作命名参数。 public int Version { get { return version; } set { version = value; } } public override string ToString() { string value = "Author : " + Name; if (version != 0) { value += " Version : " + Version.ToString(); } return value; } private string name; private int version;}// 在此处将 AuthorAttribute 用户定义的自定义属性附加到// Account 类。当创建属性时,未命名的字符串参数将被传递到// AuthorAttribute 类的构造函数。[Author("Joe Programmer")]class Account{ // 将 IsTestedAttribute 自定义属性附加到此方法。 [IsTested] public void AddOrder(Order orderToAdd) { orders.Add(orderToAdd); } private ArrayList orders = new ArrayList();}// 将 AuthorAttribute 和 IsTestedAttribute 自定义属性// 附加到此类。// 注意 AuthorAttribute 的“Version”命名参数的使用。[Author("Jane Programmer", Version = 2), IsTested()]class Order{ // 在此处添加资料...}class MainClass{ private static bool IsMemberTested(MemberInfo member) { foreach (object attribute in member.GetCustomAttributes(true)) { if (attribute is IsTestedAttribute) { return true; } } return false; } private static void DumpAttributes(MemberInfo member) { Console.WriteLine("Attributes for : " + member.Name); foreach (object attribute in member.GetCustomAttributes(true)) { Console.WriteLine(attribute); } } public static void Main() { // 显示 Account 类的属性 DumpAttributes(typeof(Account)); // 显示已测试成员的列表 foreach (MethodInfo method in (typeof(Account)).GetMethods()) { if (IsMemberTested(method)) { Console.WriteLine("Member {0} is tested!", method.Name); } else { Console.WriteLine("Member {0} is NOT tested!", method.Name); } } Console.WriteLine(); // 显示 Order 类的属性 DumpAttributes(typeof(Order)); // 显示 Order 类上的方法的属性 foreach (MethodInfo method in (typeof(Order)).GetMethods()) { if (IsMemberTested(method)) { Console.WriteLine("Member {0} is tested!", method.Name); } else { Console.WriteLine("Member {0} is NOT tested!", method.Name); } } Console.WriteLine(); }} Attributes 是自定义的属性,附加在方法字段上的信息~ 你可以通过Attributes给控件添加属性呀。 初学者关于ListView求解??? 关于Access 数据库 商用软件开发ado。net不使用ms的dataadapter和dataset吗? 找不到可安装的ISAM? c# winforms 如何给Panel边框上加个按钮 我在另外一个项目这么写,是对的,但是这里确是错误的 高分求关于连接和断开网络的C#代码。 GridView分页,实现不了,以下代码. 高分求.net网络高级编程代码! 关于更改桌面墙纸的另一个问题 c#设计表单时候,我关闭了一下,然后居然不知道打开哪个文件来打开表单设计界面了? 根据盘符怎么判断这个盘是硬盘还是光驱?
// 此示例显示类和方法属性的用法。using System;
using System.Reflection;
using System.Collections;// IsTested 类是一个用户定义的自定义属性类。
// 它可应用于任何声明,包括
// - 类型(结构、类、枚举、委托)
// - 成员(方法、字段、事件、属性、索引器)
// 它在使用时不带参数。
public class IsTestedAttribute : Attribute
{
public override string ToString()
{
return "Is Tested";
}
}// AuthorAttribute 类是一个用户定义的属性类。
// 它仅可应用于类和结构声明。
// 它带有一个未命名的字符串参数(作者的姓名)。
// 还带有一个可选的命名参数 Version,其类型是 int。
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]
public class AuthorAttribute : Attribute
{
// 此构造函数指定属性类的未命名参数。
public AuthorAttribute(string name)
{
this.name = name;
this.version = 0;
} // 该属性为只读(它没有 set 访问器)
// 因此它不能用作此属性的命名参数。
public string Name
{
get
{
return name;
}
} // 该属性为读写(它具有 set 访问器)
// 因此当将此类用作属性类时
// 它可用作命名参数。
public int Version
{
get
{
return version;
}
set
{
version = value;
}
} public override string ToString()
{
string value = "Author : " + Name;
if (version != 0)
{
value += " Version : " + Version.ToString();
}
return value;
} private string name;
private int version;
}// 在此处将 AuthorAttribute 用户定义的自定义属性附加到
// Account 类。当创建属性时,未命名的字符串参数将被传递到
// AuthorAttribute 类的构造函数。
[Author("Joe Programmer")]
class Account
{
// 将 IsTestedAttribute 自定义属性附加到此方法。
[IsTested]
public void AddOrder(Order orderToAdd)
{
orders.Add(orderToAdd);
} private ArrayList orders = new ArrayList();
}// 将 AuthorAttribute 和 IsTestedAttribute 自定义属性
// 附加到此类。
// 注意 AuthorAttribute 的“Version”命名参数的使用。
[Author("Jane Programmer", Version = 2), IsTested()]
class Order
{
// 在此处添加资料...
}class MainClass
{
private static bool IsMemberTested(MemberInfo member)
{
foreach (object attribute in member.GetCustomAttributes(true))
{
if (attribute is IsTestedAttribute)
{
return true;
}
}
return false;
} private static void DumpAttributes(MemberInfo member)
{
Console.WriteLine("Attributes for : " + member.Name);
foreach (object attribute in member.GetCustomAttributes(true))
{
Console.WriteLine(attribute);
}
} public static void Main()
{
// 显示 Account 类的属性
DumpAttributes(typeof(Account)); // 显示已测试成员的列表
foreach (MethodInfo method in (typeof(Account)).GetMethods())
{
if (IsMemberTested(method))
{
Console.WriteLine("Member {0} is tested!", method.Name);
}
else
{
Console.WriteLine("Member {0} is NOT tested!", method.Name);
}
}
Console.WriteLine(); // 显示 Order 类的属性
DumpAttributes(typeof(Order)); // 显示 Order 类上的方法的属性
foreach (MethodInfo method in (typeof(Order)).GetMethods())
{
if (IsMemberTested(method))
{
Console.WriteLine("Member {0} is tested!", method.Name);
}
else
{
Console.WriteLine("Member {0} is NOT tested!", method.Name);
}
}
Console.WriteLine();
}
}