تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
[نقاش] الفرق بين الـ Interface , Abstract Class , Base Class , Sealed Class
#5
^
يامحاسن الصدف ...

انا ايضا تعاملت مع الPlugin بالـ Reflector
ولكن ليس باستعمال الـ Interface بل باستعمال الـ Abstract class (اخت الـ Interface بالرضاعة Big Grin)

والسبب في ذلك ان الInterface لاتدعم كتابة المتغيرات بداخلها ، وهذا سبب لي مشكلة
مثلا كنت اريد اضافة متغير Name بهذا الشكل

PHP كود :
   interface IPlugin
   
{
       public string Name 
   



الا اننا نعرف ان الكود اعلاه بيسبب مشكلة ، لان الInterface لاتدعم ذلك
وحتى لو قمت بتحويل Name الى Property سيبب ذلك مشكلة وهو انني سأضطر الى اعادة تعريف للخاصية في الكلاس الجديد (بالعربي ، مااستفدت شيئSad)


بالاضافة الى ذلك ، لو طبقنا العلاقتين المذكورتين بالموضوع ، سنجد ان علاقة Is- a هي التي تصلح لموضوع الPlugin
لو عرفت Plugin باسم MyPlugin فيجب ان تستورث من Class لان العلاقة ستصبح >>>
MyPlugin Is a Plugin Smile
MyPlugin can Plugin(لغويا غير ممكنة ، لذلك العلاقة لاتصلح)


اذن العلاقة هي  Is- A  فيجب الاشتقاق من Class  .. ولكن المشكلة بالـ classes  العادية ان اكوادها ثابتة ولاتناسب موضوع الPlugin لاننا نحتاج الى Type يمكننا من عمل Re-Implemented لاستعماله كقالب للcasting او لاستعماله في Plugin اخرى ..

ولكن -لحسن الحظ- Abstract class هو المنقذ Smile[/b]
PHP كود :
   abstract class  PluginBase
    
{
 
       public string Name getset; }
 
       public string Author getset; }
 
       public abstract void Load();
 
   }


 
   //plugins
 
   public class MyPlugin PluginBase
    
{
 
       public MyPlugin() 
 
       {
 
           this.Name "Sound Plugin v1.0";
 
           this.Author "Vb4arb";
 
       }
 
       
        public override void Load
()
 
       {
 
           //my staff
 
       }
 
   }
 
   public class BrotherPlugin PluginBase
    
{
 
       public BrotherPlugin()
 
       {
 
           this.Name "Video Plugin v1.0";
 
           this.Author "google";
 
       }

 
       public override void Load()
 
       {
 
           //brother staff
 
       }
 
   
الرد }}}


الردود في هذا الموضوع
RE: متى استخدم الـ Interface ومتى استخدم الـ Class - بواسطة الشاكي لله - 29-06-16, 03:50 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [نقاش] نقاش حول تطبيق الفاتورة الإلكترونية فى السعودية المرحلة الثانية Zatca Integration AmrSobhy 3 3,040 22-05-25, 03:49 AM
آخر رد: abuarab
  تعلم Interface Abu Ehab 1 2,358 19-02-18, 10:38 PM
آخر رد: sendbad100
  KeyValuePair Class Abu Ehab 1 2,242 16-12-17, 06:08 PM
آخر رد: sendbad100
  ZipFile Class Abu Ehab 1 2,448 18-11-16, 03:44 AM
آخر رد: abulayth
  [نقاش] الـ Delegate الشاكي لله 11 10,078 01-09-16, 02:27 AM
آخر رد: أبو عمر
  [C#.NET] الفرق بين #String And String Builder c Devahmedsalim 3 4,862 15-09-13, 05:50 PM
آخر رد: sooriaty03
  Tips and Tricks : الفرق بين const و static readonly RaggiTech 0 3,543 14-10-12, 03:05 PM
آخر رد: RaggiTech
  الفرق بين التعريف باستخدام overridde و new RaggiTech 0 3,083 14-10-12, 02:57 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: