我遇到了一个实现一个接口的例子.代码部分是
public partial interface IDataProvider
{
DataTable GetEmployeeAbsenceDurationTypes();
void AlterEmployeeAbsenceDurationTypes(DataTable lookUpTable);
}
public partial class DataProvider : IDataProvider
{
public DataTable GetEmployeeAbsenceDurationTypes()
{
return GetEmployeeAbsenceDurationTypes((DbTransaction)null);
}
public DataTable GetEmployeeAbsenceDurationTypes(DbTransaction tran)
{
//Db Operations
}
}
Run Code Online (Sandbox Code Playgroud)
我的第一个问题是关于这个"DbTransaction"课程.它不在我的项目中,是否是一个类的构建?
我的第二个问题是,为什么在DataProvider(实现类)中,函数调用自身的另一个重载?
DbTransaction是在ADO.NET中表示数据库事务的通用基类; 每个实际的ADO.NET提供程序都是这个(通常)的子类 - 例如SqlTransaction : DbTransaction(sql-server客户端).
调用self的重载是实现可选参数的常用方法,在C#4.0中添加之前没有代码重复.在这种情况下,这基本上是一种4.0之前的实现方式:
public DataTable GetEmployeeAbsenceDurationTypes(DbTransaction tran = null) {...}
Run Code Online (Sandbox Code Playgroud)
实现(重载或可选参数)允许使用表单:
obj.GetEmployeeAbsenceDurationTypes(); // without transaction
obj.GetEmployeeAbsenceDurationTypes(tran); // with transaction
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
668 次 |
| 最近记录: |