나는 Modify
이라는 함수를 가지고있다. 그것은 이렇게 delcared입니다 :Generics를 다룰 때 VB.Net의 다형성
Public Function Modify(Of SIMType As {New, DAOBase})(ByVal obj As DAOBase) As Boolean
이 기능은 일반적인 것을 볼 수 있습니다. DAOBase 또는 DAOBase의 하위 클래스 인 객체를 paramer로 가져옵니다. 수정 기능 내부
통화과 같이있다 :
DAOToGP(obj)
다형성이 역할을하는 곳입니다. DAOBase
이라는 하위 클래스가 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
여기 손실에 가지입니다 :
그러나, 나는 다음과 같은 오류가 발생합니다. 내가 전화 할 기능을 알아낼 수없는 이유는 확실치 않습니다. 어떤 아이디어?
Public Function Modify(Of SIMType As {New, DAOBase})(ByVal obj As SIMType) As Boolean
그렇지 않으면 당신의 제네릭 형식 매개 변수가 쓸모없는 것 :
SIMTye는 함수에서 몇 가지 다른 장소에 사용됩니다. 그러나 왜 과부하 해결이 실패합니까? 왜 DAOToGP()의 올바른 버전을 찾을 수 없는지? – user489041