سؤال

كنت أعمل مع الفصل العام في 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

أتمنى أن يساعدك هذا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top