2014-02-03 2 views
3

Я преобразовываю код vb.net в C#. При передаче типизированного набора данных из класса сущности в параметры нетипизированного набора данных, которые доступны в dataaccess, я получаю ошибку на C#, но vb.net я не получаю ошибку.Как реализовать функцию интерфейса в классе

Одна функция, объявленная в INTERFACE, и я реализую ее в одном классе. Через Google я обнаружил, как объявить функцию в INTERFACE, но я не знаю, как ее реализовать в классе.

Из функции мне нужны как счетчик, так и дата, для этого я использовал 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 из права на dataaccess.Ple ase help me, как реализовать ниже

упомянутая функция.

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?

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

ответ

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; 
    } 
} 
+0

попробовать {...} поймать {...} бесполезно здесь: улов (Exception ех) {бросок (ех);} не делает ничего, кроме повторного выброса исключения. Вот почему try {...} finally {...} вполне достаточно –

+1

Спасибо за комментарий, я это знаю. Но это было в его коде. Поэтому, смущая его, я показал, как идет реализация. – Rakhita

Смежные вопросы