Класс DbTransaction и про интерфейсы в C # - PullRequest
4 голосов
/ 12 января 2012

Я наткнулся на пример реализации интерфейса.Часть кода:

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
    }
}

Мой первый вопрос касается этого класса "DbTransaction".Это не в моем проекте, это сборка в классе?

Мой второй вопрос: почему в DataProvider (реализующий класс) функция вызывает другую перегрузку?

Ответы [ 2 ]

5 голосов
/ 12 января 2012

DbTransaction - это общий базовый класс для представления транзакций базы данных в ADO.NET; каждый фактический провайдер ADO.NET подклассов это (как правило) - например, SqlTransaction : DbTransaction (клиент sql-сервера).

Вызов перегрузки self является распространенным способом реализации необязательных параметров, без дублирования кода до их добавления в C # 4.0. В этом случае это, по сути, способ реализации до 4.0:

public DataTable GetEmployeeAbsenceDurationTypes(DbTransaction tran = null) {...}

любая реализация (перегрузки или необязательный параметр) позволяет использовать форму:

obj.GetEmployeeAbsenceDurationTypes(); // without transaction
obj.GetEmployeeAbsenceDurationTypes(tran); // with transaction
4 голосов
/ 12 января 2012

На первый вопрос невозможно ответить точно , не видя весь код, но, вероятно, это относится к System.Data.Common.DbTransaction.

Что касается реализации - возможно, это способ повторного использования кода, вот и все. Если реализация метода с параметром может обрабатывать значение параметра null как «сделать это в новой транзакции» (или каким бы ни было поведение метода без параметров), естественно, почему не вы хотите, чтобы одна перегрузка вызывала другую?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...