افتراضي عقارات للDOTNET إمكانية التشغيل المتداخل Usercontrol
-
10-07-2019 - |
سؤال
ولست بحاجة لتعيين الخاصية الافتراضية لمراقبة DOTNET المستخدمة من قبل تطبيق VB6.
<ComClass(myControl.ClassId, myControl.InterfaceId, myControl.EventsId)> _
<DefaultProperty("NewProperty")> _
Public Class myControl
Public Const ClassId As String = "86252de2-ca87-4468-adbe-ad7c47747759"
Public Const InterfaceId As String = "c1cbf1a1-24bb-46c3-88a4-813eb4917845"
Public Const EventsId As String = "954ed890-011c-4908-ab33-610159fe6eb1"
Private newPropertyValue As String
Public Property NewProperty() As String
Get
Return newPropertyValue
End Get
Set(ByVal value As String)
newPropertyValue = value
End Set
End Property
End Class
وDefualtProperty على خاصية لا تفعل خدعة.
ولقد قرأت هنا أن وضع DISPID يدويا إلى الصفر ينبغي أن تفعل خدعة. ولكن إذا كنت تفعل هذا:
<DispId(0)> Public Property NewProperty() As String
والبصرية الأساسية التكرم يبلغني أن DISPID صفر محجوز لDefaultProperty. بلى. وأنا أعلم ذلك. اريد ذلك. ولكن كيف؟
وتحرير:
Default Public Property NewProperty(ByVal foo As Integer) As String
هل تعمل كما يبين الملكية الآن على النحو الخاصية الافتراضية في VB6. ولكن هذا لن يحل المشكلة، وذلك لأن هناك رمز التي لا أستطيع تغييرها، والتي سوف تفعل شيئا مثل هذا:
aStringVariable = myUserControlInstance
هذه المقالة MSDN لديه بعض المعلومات حول هذا الموضوع.
المحلول
ولأن هناك رمز التي لا أستطيع تغيير
اقتباس فقرة>وإذا كان هذا هو الحال بعد ذلك كنت بحاجة لإنشاء فئة التفاف حول فئة. NET الأصلية والتصدير أن مثل التحكم المستخدمة من قبل VB6. ثم يمكنك وضع علامة الخاصية الافتراضية كما باستخدام الكلمة الافتراضية.
نصائح أخرى
ولا توجد وسيلة أخرى سوى إنشاء مجمع في VB6 لتقليد سلوك الخاصية الافتراضية من VB6. لقد كان لإنشاء عدة عناصر تحكم المستخدم إمكانية التشغيل المتداخل وكان هذا هو السبب الرئيسي كان علينا أن التفاف عنصر تحكم إمكانية التشغيل المتداخل صافي مرة أخرى في VB6 (لتجنب الكثير من التغيير رمز واختبار الجهد الضخم).