我有一個叫做Modify
的函數。它是這樣挖掘的:處理泛型時在VB.Net中的多態性
Public Function Modify(Of SIMType As {New, DAOBase})(ByVal obj As DAOBase) As Boolean
你可以看到這個函數是通用的。它將一個DAOBase或DAOBase的子類作爲一個對象。
裏面的修改功能有一個叫就像這樣:
DAOToGP(obj)
這就是多態性的用武之地。有四個左右的子類我創建了DAOBase
。我已經爲這些類型寫了一個DAOToGP()
。因此,在Modify()
函數中,當它調用DAOToGP(obj)
時,多態性應該啓動,它應該調用DAOToGP()
的正確實現,具體取決於我傳遞給Modify()
的類型。
不過,我得到以下錯誤:
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 2012-01-06 16:41:43