سؤال

لدي بعض التعليمات البرمجية VB (في الواقع VBA) الذي هو في الأساس نفسه باستثناء النوع الذي تعمل فيه.منذ أعتقد الجافة المبدأ هو المبدأ التوجيهي جيد لتطوير البرمجيات ، أريد أن أكتب روتين واحد لكافة أنواع مختلفة التي تحتاج إلى أن تعمل على.على سبيل المثال إذا كان لدي اثنين من قصاصات من التعليمات البرمجية مثل هذه:

Dim i as Obj1
Set i = RoutineThatReturnsObj1()
i.property = newvalue

Dim i as Obj2
Set i = RoutineThatReturnsObj2()
i.property = newvalue

أود أن يكون شيئا مثل هذا التعامل مع كل الحالات:

Sub MyRoutine(o as ObjectType, r as RoutineToInitializeObject, newvalue as value) 
   Dim i as o
   Set i = r
   i.property = newvalue
End Sub

إذا كنت تستخدم C++ أود إنشاء قالب و لا أقول المزيد عن ذلك.ولكن أنا باستخدام VBA.أنا متأكد لا يوجد قدرة مثل C++ قوالب في VBA تعريف اللغة ولكن هل هناك أي وسيلة أخرى التي لا يمكن تحقيق نفس التأثير ؟ أظن أن الجواب لا ولكن أنا أسأل هنا لأنه ربما هناك بعض السمات VBA التي كنت قد غاب.

هل كانت مفيدة؟

المحلول

لا يوجد شيء في VB6 من شأنها أن تفعل ذلك.إذا قمت بتحديث إلى Visual Studio Tools ل Office مع .صافي يمكنك استخدام الأدوية:

Function MyRoutine(Of O)(R As Delegate, newvalue As Object) As O
    Dim i As O = CType(r.Method.Invoke(Nothing, Nothing), O)

    'you need another parameter to tell it which property to use'
    ' and then use reflection to set the value'
    i.property = newvalue 
    return i
End Function
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top