我有一段代碼使用DbDataAdapter
從DataTable
填充數據庫表。無法通過VS2015上的反射綁定到事件
DbDataAdapter
通過DbProviderFactory.CreateDataAdapter
方法創建,其中DbProviderFactory
由Devart dotConnect提供。
我們使用Devart的驅動程序Oracle,SqlServer和Postgres。
由於我在我的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),與此異常:
無法綁定到目標方法,因爲它的簽名或安全透明度與代理類型的不兼容
對此有何幫助?
既不使用Devart.Data.PostgreSql.PgSqlRowUpdatedEventHandler
(我目前在Postgres上)作爲e
工程的類型。
是否與'評估工作作爲Devart.Data.PostgreSql.PgSqlRowUpdatedEventArgs'在處理程序? – djv
@djv ouch!我使用事件處理程序,而不是事件參數!我明天再試! – Teejay
@djv我會在明天嘗試正確的一個,無論如何,我想避免這麼具體,因爲這樣我就不得不測試DbType,然後使用特定事件。 – Teejay