Accidentally,I saw "[System.ComponentModel.DataObject]" before a class or a method was declared, I just don't understand why need it. So I searched & ask my friends, then I got the answer.
It is used to identifies a data operation method exposed by a type, what type of operation the method performs, and whether the method is the default data method. This class cannot be inherited.
It has two constructor methods:
the first one is DataObjectMethodAttribute(DataObjectMethodType):Initializes a new instance of the DataObjectMethodAttribute class and identifies the type of data operation the method performs.
the other one is DataObjectMethodAttribute(DataObjectMethodType, Boolean):Initializes a new instance of the DataObjectMethodAttribute class, identifies the type of data operation the method performs, and identifies whether the method is the default data method that the data object exposes.
You can use the DataObjectMethodAttribute to identify data operation methods on a type marked with the DataObjectAttribute attribute so that they are more easily identified by callers using reflection. When the DataObjectMethodAttribute attribute is applied to a method, it describes the type of operation the method performs and indicates whether the method is the default data operation method of a type. Components such as the ObjectDataSource control and the ObjectDataSourceDesigner class examine the values of this attribute, if present, to help determine which data method to call at run time.