对于类似于这样的说明标记[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethod
Type.Delete, true)]
该标记不起任何实际作用,仅是告诉vs该语句下面的方法(Method)是ObjectDataSource的默认绑定方法
标记的作用是为了让编译器更好的为ObjectDatasource向导找到合适的方法
下面的代码示例演示如何将 DataObjectMethodAttribute 属性应用于一个公共公开的方法,并标识该方法所执行的数据操作类型及该方法是否是该类型的默认数据方法。在此示例中,NorthwindData 类型公开两个数据方法:一个方法名为 GetAllEmployees,用于检索一组数据;另一个方法名为 DeleteEmployeeByID,用于删除数据。将 DataObjectMethodAttribute 属性同时应用于这两个方法,将 GetAllEmployees 方法标记为“Select”数据操作的默认方法,将 DeleteEmployeeByID 方法标记为“Delete”数据操作的默认方法。
C#
复制代码
[DataObjectAttribute]
public class NorthwindData
{
public NorthwindData() {}
[DataObjectMethodAttribute(DataObjectMethodType.Select, true)]
public static IEnumerable GetAllEmployees()
{
AccessDataSource ads = new AccessDataSource();
ads.DataSourceMode = SqlDataSourceMode.DataReader;
ads.DataFile = "~//App_Data//Northwind.mdb";
ads.SelectCommand = "SELECT EmployeeID,FirstName,LastName FROM Employees";
return ads.Select(DataSourceSelectArguments.Empty);
}
// Delete the Employee by ID.
[DataObjectMethodAttribute(DataObjectMethodType.Delete, true)]
public void DeleteEmployeeByID(int employeeID)
{
throw new Exception("The value passed to the delete method is "
+ employeeID.ToString());
}
}
解释一下各位对于那些方括号的疑问,那个东西叫做Attribute(中文不知道该翻译成什么比较合适),主要是反射的时候用,本文中的这些Attribute非常的简单,仅仅是告诉反射的用户这个方法是干什么用的,以及是不是默认使用这个方法(似乎有些拗口,我们还是举例子吧)
e.g.
[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, true)]
public Northwind.ProductsDataTable GetProducts()
{
return Adapter.GetProducts();
}
其中,System.ComponentModel.DataObjectMethodType.Select说明这是一个用于Select的方法,true说明这是默认的用于Select的方法
所以,相对的
[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, false)]
public Northwind.ProductsDataTable GetProductByProductID(int productID)
{
return Adapter.GetProductByProductID(productID);
}
就说明这是一个用于Select的方法,但是它不是默认的用于Select的方法
需要说明的是,上面所讨论的System.ComponentModel.DataObjectMethodAttribute是针对ProductsBLL而言的,也就是说当反射ProductsBLL的时候,这些东西就可以用了(注意:ProductsBLL是被标记为System.ComponentModel.DataObject的一个类,所以才可以用这些Attribute,否则会出问题的)
再简要的说明一下“反射”,我们在往设计器里面添加一个控件后,都可以使用属性窗口,这个属性窗口里面能显示这个控件的一些相关的东西,这个就是反射一种用法
转载于:https://www.cnblogs.com/zhongcj/archive/2008/07/24/1250634.html