문제

나는 vb.net의 일반 수업과 함께 일하고있었습니다.
그리고 유형을 지정하지 않고는 확장 방법을 일반 클래스에 적용 할 수없는 것 같습니다.

이 일반적인 수업이 있습니다

Public Class MyGeneric(Of T)
    'Methods and properties go here 
    '
    '
End Class  

이것은 괜찮습니다

<Extension()> _
Public Sub DoSomething(ByVal myGenericDoubleObj As MyGen(Of Double))

End Sub  

이것은 괜찮지 않습니다 (IDE는 정의되지 않은대로 오류 T를 제공합니다.)

<Extension()> _
Public Sub DoSomethingGeneric(ByVal myGenericObj As MyGen(Of T))

End Sub

이것은 .NET의 정적 점검과 관련이 있습니다.
"T 형을 사용하여 시도 할 수있는 일은 호환되지 않을 수 있으며 나는 당신이 그것을 할 수 없을 것입니다."

추신 : 제가 일반 수업으로 취한이 고통은 다른 도서관에서 나오고 여러 곳에서 사용됩니다. 상속 된 일반 클래스 에서이 방법을 상속하고 추가하는 것에 대해 거의 조심하지 않습니다.

도움이 되었습니까?

해결책

확장 방법을 일반 방법으로 만들면 작동해야합니다.

즉, 복용량 (t) () 그냥 dosomething ()의 텐더

<Extension()> _
Public Sub DoSomething(Of T)(ByVal myGenericObj As MyGeneric(Of T))
End Sub

도움이 되었기를 바랍니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top