WEB开发网
开发学院软件开发C语言 Effective C# 原则24:选择申明式编程而不是命令式... 阅读

Effective C# 原则24:选择申明式编程而不是命令式编程

 2009-02-19 08:16:28 来源:WEB开发网   
核心提示: 你应该使用.Net框架里自带的一些特性来申明你的意图,这比你自己写要好,Effective C# 原则24:选择申明式编程而不是命令式编程(2),因为这样花的时间少,更简单,你将用到反射来发现正确的属性,然后比较两个不同对象的属性值,而且编译器也不会出现错误,如果预置的特性不适合你的需求

你应该使用.Net框架里自带的一些特性来申明你的意图,这比你自己写要好。因为这样花的时间少,更简单,而且编译器也不会出现错误。

如果预置的特性不适合你的需求,你也可以通过定义自己的特性和使用反射来使用申明式编程结构。做为一个例子,你可以创建一个特性,然而关联到代码上,让用户可以使用这个特性来创建默认可以排序的类型。一个例子演示了如何添加这个特性,该特性定义了你想如何在一个客户集合中排序:

[DefaultSort( "Name" )]
public class Customer
{
 public string Name
 {
  get { return _name; }
  set { _name = value; }
 }
 public decimal CurrentBalance
 {
  get { return _balance; }
 }
 public decimal AccountValue
 {
  get
  {
   return calculateValueOfAccount();
  }
 }
}

DefaultSort特性,Nane属性,这就暗示了任何Customer的集合应该以客户名字进行排序。DefaultSort特性不是.Net框架的一部份,为了实现它,你创建一个DefaultSortAttribute类:

[AttributeUsage( AttributeTargets.Class |
 AttributeTargets.Struct )]
public class DefaultSortAttribute : System.Attribute
{
 private string _name;
 public string Name
 {
  get { return _name; }
  set { _name = value; }
 }
 public DefaultSortAttribute( string name )
 {
  _name = name;
 }
}

同样,你还必须写一些代码,来对一个集合运行排序,而该集合中的元素是添加了DefaultSort特性的对象。你将用到反射来发现正确的属性,然后比较两个不同对象的属性值。一个好消息是你只用写一次这样的代码。

上一页  1 2 3 4  下一页

Tags:Effective 原则 选择

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