2008-09-19 13 views
0

私たちのアプリケーション用の汎用エラー処理/ロギングクラスを作成しています。目標は、例外情報、クラスと関数(およびパラメータ)に関する情報、および関連する場合はSystem.Data.SqlClient.SqlCommandオブジェクトに関する情報を記録することです。C#で指定されたTableAdaptorとSqlDataAdaptorのSQLコマンドオブジェクトを取得する方法

私はSqlCommands,TableAdaptors、およびSqlDataAdaptorsに渡すことができます。

私はリフレクションを初めて使用しており、これを行うことが可能であることを知っています。どうすればいいのか分かりません。お知らせ下さい。

答えて

0

これはあなたの話ですか?

SqlDataAdapter da = new SqlDataAdapter(); 
var cmd1 = ((IDbDataAdapter)da).DeleteCommand; 
var cmd2 = ((IDbDataAdapter)da).UpdateCommand; 
var cmd3 = ((IDbDataAdapter)da).SelectCommand; 
var cmd4 = ((IDbDataAdapter)da).InsertCommand; 

SqlDataAdapterオブジェクトは、すべてのCRUDコマンドのgetter/setterを持つIDbDataAdapterを実装します。 SqlDataAdapterはこれらを明示的に実装しているため、インターフェイスに最初にキャストしない限り、クラスのシグネチャには表示されません。反射は必要ありません。

+0

強く型付けされたDataSetのTableAdaptorsにも同様の方法がありますか? – CrashTECH

+0

これらの厳密に型指定されたデータアダプタは、VSが型セーフなクラスの中に(ツール経由で)ラップした単純なアダプタであるため、まったく同じと仮定します。タイプセーフラッパーがIDbDataAdapterから拡張されていない場合は、メソッドを手動で追加して内部アダプターにアクセスする必要があります。 – Will

関連する問題