منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
سؤال حول المعامل Ctype - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : سؤال حول المعامل Ctype (/showthread.php?tid=18826)



سؤال حول المعامل Ctype - ndjakoub - 16-01-17

السلام عليكم

لدي مثلا الفئة Virement أصلية  
أشتق منها فئة VirementBank وأضيف لها خصائص جديدة

ثم أقوم بهذه العملية

Dim v1 as new Virement
Dim v2 as new VirementBank = Ctype(v1,VirementBank )

عند التنفيذ ينطلق هذا الخطأ
Impossible d'effectuer un cast d'un objet de type 'VIREMENT' en type VirementBank

هل من طريقة أخرى لعمل التحويل  وشكرا


RE: سؤال حول المعامل Ctype - مساعدة - 16-01-17

السلام عليكم


أولا غير صحيح أن تنشأ كانت جديد ب New وفي نفس الوقت تريد تحويله في سطرك الذي يبدو انك لم تنسخه كما هو من الكود الموجود لديك
كود :
Dim v2 as new VirementBank = Ctype(v1,VirementBank)

يجب أن تكون الفئة Virement موروثة من VirementBank بواسطة Inherits وهذا ما تنفيه الرسالة، إلا إذا كان المقصود بالاشتقاق غير Inherits

سيعمل الكود لو كان مثل
كود :
Dim v1 As New Virement

Dim v2 As VirementBank = CType(v1, VirementBank)

Dim v3 As New VirementBank
v3 = CType(v1, VirementBank)

كود :
Class Virement
    Inherits VirementBank

End Class

كود :
Class VirementBank

End Class



RE: سؤال حول المعامل Ctype - silverlight - 17-01-17

المشكلة ليست في الوراثة أنت هنا تحاول الحصول علي نوع من نوع اخر
أو بمعني أدق أنت هنا تحاول ان تقوم بعمل Casting و تحويل فئة الي فئة أخري  
و بالرغم ان احد الكلاسان مشتق من الأخر أي أنهم فعليا ينتميان الي نفس الأصل لكنك لن تحصل علي نتيجة دقيقة إلا إن كتبت دوال Ctype علي هيئة دوال من النوع Shared   و هذا يجب أن يتم إما في الكلاس الأصلي او الكلاس الأخر
أنصجك أن باستخدام Interface و تقوم بعمل Implementation له في كل من الكلاسان و هذا سوف ييسر لك الحصول علي نوع من الأخر