.NEt专家博客!

【Microbar 】Asp.net 类中使用中括号([......])的作用

上一篇 / 下一篇  2008-07-24 16:51:07 / 个人分类:.net

对于类似于这样的说明标记[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethod
P ?:r/w|j+TW?-i0Type.Delete, true)]ITPUB个人空间4R%W8n4Yu,b)u
该标记不起任何实际作用,仅是告诉vs该语句下面的方法(Method)是ObjectDataSource的默认绑定方法ITPUB个人空间 bQ}N9x1wE!h

f'A-h9|6[0标记的作用是为了让编译器更好的为ObjectDatasource向导找到合适的方法ITPUB个人空间"u;G!\6s-m_%S M*c
ITPUB个人空间_['j&Cs/_v

!K WKz4Q0下面的代码示例演示如何将 DataObjectMethodAttribute 属性应用于一个公共公开的方法,并标识该方法所执行的数据操作类型及该方法是否是该类型的默认数据方法。在此示例中,NorthwindData 类型公开两个数据方法:一个方法名为 GetAllEmployees,用于检索一组数据;另一个方法名为 DeleteEmployeeByID,用于删除数据。将 DataObjectMethodAttribute 属性同时应用于这两个方法,将 GetAllEmployees 方法标记为“Select”数据操作的默认方法,将 DeleteEmployeeByID 方法标记为“Delete”数据操作的默认方法。ITPUB个人空间s!lj @}xT9O
C#
+m,i5y$J]T6v/@b0 复制代码
$ryp.l3N0[DataObjectAttribute]
'{)A4["sC$id0public class NorthwindDataITPUB个人空间h }l8v@8`5eo,b
{  
7evLp-V0  public NorthwindData() {}
];],M.^&CFq.{0ITPUB个人空间9Y(v_&RaV-O!@
  [DataObjectMethodAttribute(DataObjectMethodType.Select, true)]ITPUB个人空间 lY2[T q!\
  public static IEnumerable GetAllEmployees()ITPUB个人空间a B5[i1X-H
  {
w z"y)Vg)MtQ0  AccessDataSource ads = new AccessDataSource();ITPUB个人空间N%C[)N2R,{9QQt
  ads.DataSourceMode = SqlDataSourceMode.DataReader;ITPUB个人空间1Aip#z1t!J)da2B4V
  ads.DataFile = "~//App_Data//Northwind.mdb";ITPUB个人空间Dh,[;s9[:N
  ads.SelectCommand = "SELECT EmployeeID,FirstName,LastName FROM Employees";
C4r-N k:y`7r0  return ads.Select(DataSourceSelectArguments.Empty);
-uxm+f~ r(p-x"M0  }
#zb:_ X @E$G0
6pM$Y6LFkr0  // Delete the Employee by ID.ITPUB个人空间-J-_ h-e#|vBc
  [DataObjectMethodAttribute(DataObjectMethodType.Delete, true)]
IFx:|vi}1O$l0  public void DeleteEmployeeByID(int employeeID)
*r3I-x|-yL7s0  {
(Rn ?&m0gE-o.f0  throw new Exception("The value passed to the delete method is "ITPUB个人空间O d Td,^(SFN e\
  + employeeID.ToString());ITPUB个人空间.Q%a!E? c_6r LNn
  }ITPUB个人空间tke?U
}
,r9E;@OShh s0ITPUB个人空间:xT2{K|
解释一下各位对于那些方括号的疑问,那个东西叫做Attribute(中文不知道该翻译成什么比较合适),主要是反射的时候用,本文中的这些Attribute非常的简单,仅仅是告诉反射的用户这个方法是干什么用的,以及是不是默认使用这个方法(似乎有些拗口,我们还是举例子吧) 
/W \i;q JxO0H0
&z+h?,Q'oQ)e+e0e.g. 
&U @yu~*?7B H0[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, true)] ITPUB个人空间1G1y5BTr6~q
public Northwind.ProductsDataTable GetProducts() 
%]?i P-a&pfbu0ITPUB个人空间ddn;C6bC s
return Adapter.GetProducts(); ITPUB个人空间j7m}5kMPc&U

&@+w&I W$z0其中,System.ComponentModel.DataObjectMethodType.Select说明这是一个用于Select的方法,true说明这是默认的用于Select的方法 
M| a9kA;Q0
#}8kzYT y d0所以,相对的 
/e.T'N}f^W/q0[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, false)] 
~ Zb4`} }(M0public Northwind.ProductsDataTable GetProductByProductID(int productID) ITPUB个人空间e/ey w)g9j

_e%]/K\ @fEl0return Adapter.GetProductByProductID(productID); 
C,C(AE&}w:V0
l*h RY1ra+PE5V)C0就说明这是一个用于Select的方法,但是它不是默认的用于Select的方法 ITPUB个人空间,dG/CI4_r!s
ITPUB个人空间"V8v X.NYB!K p

u El[9cgY2S0需要说明的是,上面所讨论的System.ComponentModel.DataObjectMethodAttribute是针对ProductsBLL而言的,也就是说当反射ProductsBLL的时候,这些东西就可以用了(注意:ProductsBLL是被标记为System.ComponentModel.DataObject的一个类,所以才可以用这些Attribute,否则会出问题的) ITPUB个人空间 oVe[Ps'R
ITPUB个人空间oL7Dv'Z"Q
再简要的说明一下“反射”,我们在往设计器里面添加一个控件后,都可以使用属性窗口,这个属性窗口里面能显示这个控件的一些相关的东西,这个就是反射一种用法ITPUB个人空间 c]}1R p

TAG: 微软

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar