تطبيق طريقة التمديد على فئة عامة مع نوع عام
-
20-08-2019 - |
سؤال
كنت أعمل مع الفصل العام في 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 قد لا يكون متوافقًا ولن أسمح لك بفعله."
ملاحظة.كل هذا الألم الذي تحملته كصف عام يأتي من مكتبة أخرى، ويستخدم في العديد من الأماكن المختلفة.أنا حذر قليلاً من وراثة هذه الطريقة وإضافتها في صفي العام الموروث.
المحلول
إذا جعلت طريقة الامتداد الخاصة بك طريقة عامة فيجب أن تعمل
أي افعل شيئًا ما (من تي) () بدلاً من DoSomething () فقط
<Extension()> _
Public Sub DoSomething(Of T)(ByVal myGenericObj As MyGeneric(Of T))
End Sub
أتمنى أن يساعدك هذا
لا تنتمي إلى StackOverflow