DataTable
からDbDataAdapter
を使用してデータベーステーブルを塗りつぶしたコードがあります。VS2015でのリフレクションによるイベントへのバインドができません
DbProviderFactory.CreateDataAdapter
メソッドによって作成されます。DbProviderFactory
は、Devart dotConnectです。
Oracle、SqlServer、Postgres用のDevartのドライバを使用します。
私はDataTable
にほぼ100k行を持っているので、残念なことに一般的なインターフェイスで定義されていないRowUpdated
イベントにバインドする必要があります(残念ながら、上記のすべてのデータベースドライバで利用できます)。
Dim eventInfo As System.Reflection.EventInfo = adapter.GetType().GetEvent("RowUpdated")
eventInfo.AddEventHandler(adapter, [Delegate].CreateDelegate(eventInfo.EventHandlerType,
(Sub(s As Object, e As EventArgs) UpdateProgress(s, e)).Method))
このVS2013でコンパイルしたが、失敗した場合に完全に動作し、実行時にこの例外に、ロスリン(VS2015)でコンパイルされた場合:
シグネチャまたはセキュリティの透過性がデリゲートタイプのものと互換性がないため、ターゲットメソッドにバインドできません
これに関する助力?
e
の種類としてDevart.Data.PostgreSql.PgSqlRowUpdatedEventHandler
(私は現在Postgresにあります)を使用していません。
は、それがハンドラ内でDevart.Data.PostgreSql.PgSqlRowUpdatedEventArgs'として、電子 'で動作しますか? – djv
@djv ouch!イベント引数の代わりにイベントハンドラを使用しました!私は明日にしよう! – Teejay
@djv私はDbTypeをテストして特定のイベントを使用しなければならないので、明白な正しい方法を試してみます。 – Teejay