私はModify
という機能を持っています。VB.Netの多態性ジェネリックスを扱うとき
Public Function Modify(Of SIMType As {New, DAOBase})(ByVal obj As DAOBase) As Boolean
この機能は一般的であることがわかります。 DAOBaseのサブクラスであるオブジェクト、またはDAOBaseのサブクラスをパラメタとして受け取ります。
修正機能インサイドそうのような呼び出しがあります:
DAOToGP(obj)
多型が出番です。という4つのサブクラスがあります。私はこれらのタイプのそれぞれについてDAOToGP()
を書いています。だから、Modify()
関数では、DAOToGP(obj)
を呼び出すと、多態性が発生し、Modify()
に渡すタイプに応じて、DAOToGP()
の正しい実装を呼び出す必要があります。
Error 20 Overload resolution failed because no accessible 'DAOToGP' can be called without a narrowing conversion:
'Public Shared Function DAOToGP(distributor As Distributors) As Microsoft.Dynamics.GP.Vendor': Argument matching parameter 'distributor' narrows from 'SierraLib.DAOBase' to 'IMS.Distributors'.
'Public Shared Function DAOToGP(product As Products) As Microsoft.Dynamics.GP.SalesItem': Argument matching parameter 'product' narrows from 'SierraLib.DAOBase' to 'IMS.Products'. C:\Users\dvargo.SIERRAWOWIRES\Documents\Visual Studio 2010\Projects\SIM\Dev_2\SIM\IMS\DVSIMLib\GP\GPSIMRunner\Runners\RunnerBase.vb 66 39 IMS
私はここで途方に暮れて一種の午前:
はしかし、私は次のエラーを取得します。なぜ呼び出すべき機能がないのかわかりません。何か案は?
SIMTyeは、機能のいくつかの異なる場所で使用されます。しかし、なぜオーバーロードの解決に失敗するのですか?使用する 'DAOToGP()'の正しいバージョンが見つからないのはなぜですか? – user489041