如何在类中实现接口函数

时间:2014-02-03 04:29:34

标签: c# interface datatable dataset

我正在将vb.net代码转换为c#。将类型化数据集从实体类传递到数据访问中可用的无类型数据集参数时,我在C#中遇到错误但是vb.net我没有收到错误。

在INTERFACE中声明了一个函数,我正在一个类中实现。通过Google,我找到了如何在INTERFACE中声明一个函数,但我不知道如何在类中实现。

从函数我需要count和数据表,因为我在函数中使用了ref。如何实现下面提到的功能?

我想实现下面提到的功能。

int ExecuteDataAdapterDataTableWithParams<T>(IDbCommand podbCommand, ref T pdtDataTable) where T : DataTable;

将下面提到的代码从VB.NET CODE转换为C#

接口代码:

Function ExecuteDataAdapterDataTableWithParams(ByVal podbCommand As IDbCommand, _
  ByRef pdtDataTable As DataTable) As Integer

实施代码:

Public Function ExecuteDataAdapterDataTableWithParams(ByVal podbCommand As IDbCommand, _
      ByRef pdtDT As DataTable) _
      As Integer Implements diNonTransactional.ExecuteDataAdapterDataTableWithParams
  Dim ldaDataAdapter As IDataAdapter
  Dim lodbTrans As IDbTransaction
  Dim liFetchedRows As Integer
  lodbTrans = EstablishConnection()
  'EstablishConnection()
  Try
    podbCommand.Connection = coConnection
    podbCommand.Transaction = lodbTrans
    ldaDataAdapter = GetDataAdapter(podbCommand)
    ldaDataAdapter.TableMappings.Add("Table", pdtDT.TableName)
    liFetchedRows = ldaDataAdapter.Fill(pdtDT.DataSet)
  Catch ex As Exception
    Throw ex
  Finally
    CloseConnection(lodbTrans)
    'CloseConnection()
  End Try
  Return liFetchedRows
End Function

将代码从VB.NET转换为C#,但是下面提到的代码无效,因为我将typeddataset从entitty传递给dataaccess。请帮我解释如何实现下面的

提到的功能。

int ExecuteDataAdapterDataTableWithParams(IDbCommand podbCommand, ref DataTable pdtDataTable);

实施代码:

public int ExecuteDataAdapterDataTableWithParams(IDbCommand podbCommand,  ref
        DataTable pdtDT)
{
    IDataAdapter ldaDataAdapter = default(IDataAdapter);
    IDbTransaction lodbTrans = default(IDbTransaction);
    int liFetchedRows = 0;
    lodbTrans = EstablishConnection();
    try
    {
        podbCommand.Connection = coConnection;
        podbCommand.Transaction = lodbTrans;
        ldaDataAdapter = GetDataAdapter(ref podbCommand);
        ldaDataAdapter.TableMappings.Add("Table", pdtDT.TableName);
        liFetchedRows = ldaDataAdapter.Fill(pdtDT.DataSet);
        liFetchedRows = pdtDT.Rows.Count;
    }
    catch (Exception ex)
    {
        throw (ex);
    }
    finally
    {
        CloseConnection(ref lodbTrans);
    }
    return liFetchedRows;
}

如何在dataacess类中实现下面提到的INTERFACE函数?

int ExecuteDataAdapterDataTableWithParams<T>(IDbCommand podbCommand, ref T pdtDataTable) where T : DataTable;

1 个答案:

答案 0 :(得分:1)

接口

public interface ITest
{
    int ExecuteDataAdapterDataTableWithParams<T>(IDbCommand podbCommand, ref T pdtDataTable) where T : DataTable;
}

实施

public class Test : ITest
{
    public int ExecuteDataAdapterDataTableWithParams<T>(IDbCommand podbCommand, ref T pdtDT) where T : DataTable
    {
        IDataAdapter ldaDataAdapter = default(IDataAdapter);
        IDbTransaction lodbTrans = default(IDbTransaction);
        int liFetchedRows = 0;
        lodbTrans = EstablishConnection();
        try
        {
            podbCommand.Connection = coConnection;
            podbCommand.Transaction = lodbTrans;
            ldaDataAdapter = GetDataAdapter(ref podbCommand);
            ldaDataAdapter.TableMappings.Add("Table", pdtDT.TableName);
            liFetchedRows = ldaDataAdapter.Fill(pdtDT.DataSet);
            liFetchedRows = pdtDT.Rows.Count;
        }
        catch (Exception ex)
        {
            throw (ex);
        }
        finally
        {
            CloseConnection(ref lodbTrans);
        }
        return liFetchedRows;
    }
}