WEB开发网
开发学院软件开发C语言 Effective C# 原则42:使用特性进行简单的反射 阅读

Effective C# 原则42:使用特性进行简单的反射

 2009-02-19 08:17:38 来源:WEB开发网   
核心提示: 现在,让我们添加另一个新的特性来查找命令句柄,Effective C# 原则42:使用特性进行简单的反射(3),一个类型应该可以很简单的实现好几个命令句柄,所以你可以定义新的特性,以及添加它们到新的菜单项中,你可以把特性和反射组合起来使用,让插件的作者可以把它添加到命令句柄上,这个特性会包

现在,让我们添加另一个新的特性来查找命令句柄。一个类型应该可以很简单的实现好几个命令句柄,所以你可以定义新的特性,让插件的作者可以把它添加到命令句柄上。这个特性会包含一参数,这些参数用于定义新的菜单命令应该放在什么地方。每一个事件句柄处理一个特殊的命令,而这个命令应该在菜单的某个特殊地方。为了标记一个命令句柄,你要定义一个特性,用于标记一个属性,让它成为一个命令句柄,并且申明菜单上的文字以及父菜单文字。DynamicCommand特性要用两个参数来构造:菜单命令文字以及父菜单的文字。这个特性类还包含一个构造函数,这个构造函数用于为菜单初始化两个字符串。这些内容同样可以使用可读可写的属性:

[AttributeUsage( AttributeTargets.Property ) ]
public class DynamicMenuAttribute : System.Attribute
{
 private string _menuText;
 private string _parentText;
 public DynamicMenuAttribute( string CommandText,
  string ParentText )
 {
  _menuText = CommandText;
  _parentText = ParentText;
 }
 public string MenuText
 {
  get { return _menuText; }
  set { _menuText = value; }
 }
 public string ParentText
 {
  get { return _parentText; }
  set { _parentText = value; }
 }
}

这个特性类已经做了标记,这样它只能被应用到属性上。而命令句柄必须在类中以属性暴露出来,用于提供给命令句柄来访问。使用这一技术,可以让程序在启动的时候查找和添加命令句柄的代码变得很简单。

现在你创建了这一类型的一个对象:查找命令句柄,以及添加它们到新的菜单项中。你可以把特性和反射组合起来使用,用于查找和使用命令句柄属性,对对象进行推测:

上一页  1 2 3 4 5  下一页

Tags:Effective 原则 使用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接