تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مشكلة غريبة جداً عند اشتقاق كلاس من إنترفيس Class1 Can't Implement interface1
#1
السلام عليكم ورحمة الله وبركاته كيف احوالكم اخواني الأفاضل اساتذة البرمجة العرب

عساكم بخير وصحة وسلامة ان شاء الله

إخواني الأفاضل انا قمت ببرمجة كلاس واريد ان اشتقه من إنترفيس انا قمت ببرمجتها كما نفعل عندما تشتق كلاس من الإنترفيس IDisposal

ولكن عند تنفيذ البرنامج يضع لي علامة خطأ ويخبرني ان الكلاس هذا لا يمكنه عمل Implement من الإنترفيس المطلوبة مع اني لم افهم مامعنى كلمة Implement
متى يحصل مثل هذه الأخطاء

ارجوا المساعدة ولكم جزيل الشكر
الرد }}}
تم الشكر بواسطة:
#2
[COLOR="#000080"]قمت بعمل Implement لنفس الواجهه IDisposal وعرفت السبب
وهو ان الفئة لايمكن وراثتها Public NotInheritable Class AAA والخطأ يظهر على اعادة القيادة لــDispose
[/COLOR]
الرد }}}
تم الشكر بواسطة:
#3
ولكن انا رايت الكثير من الكلاسات التي تشتق من الإنترفيس IDisposal ??????

هل تقصد بكلامك انه لا يمكن الإشتقاق من الواجهات بشكل عام لان حتى في كلاسات الدوت نت هناك الكثير منها مشتق من واجهات
الرد }}}
تم الشكر بواسطة:
#4
<br> كتب :ولكن انا رايت الكثير من الكلاسات التي تشتق من الإنترفيس IDisposal ??????

هل تقصد بكلامك انه لا يمكن الإشتقاق من الواجهات بشكل عام لان حتى في كلاسات الدوت نت هناك الكثير منها مشتق من واجهات

IDisposal ؟؟

لاتوجد هذه الانترفيس عندي ، إنما توجد عندي فقط IDisposable

والكود ادناه يعمل 100%

PHP كود :
public class Vb4arb IDisposable
    
{

        
#region IDisposable Members

        
public void Dispose()
        {
           
//implimtion
        
}

        
#endregion
    


الرد }}}
تم الشكر بواسطة:
#5
آسف اخي اخطأت بكتابة إسم الإنترفيس المهم انه بإمكاننا توريث كلاس من إنترفيس

طيب انا استخدم مكتبة للتحكم بالكاميرا الرقمية WebCam هناك كلاس بإسم Capture يرث من إنترفيس بإسم ISambleGraberCB
عندما اقوم بتنفيذ البرنامج يضع الكومبايلر خط ازرق تحت إسم الكلاس ويظهر هذين الخطأين

1-

DirectX.Capture.Capture does not implement interface member DShowNET.ISambleGraberCB.BufferCB(double,system.intptr
,int)
2-
DirectX.Capture.Capture does not implement interface member DShowNET.ISambleGraberCB.SambleCB(double
DShowNET.IMediaSamble)

أتمنى بأن اجد حل لهذه المشكلة عندك ولكم جزيل الشكر ياأخي العزيز ويا حبذا لو تشرحلي مالذي يقصده الكومبايلر بالــ Implement
الرد }}}
تم الشكر بواسطة:
#6
<br> كتب :آسف اخي اخطأت بكتابة إسم الإنترفيس المهم انه بإمكاننا توريث كلاس من إنترفيس

طيب انا استخدم مكتبة للتحكم بالكاميرا الرقمية WebCam هناك كلاس بإسم Capture يرث من إنترفيس بإسم ISambleGraberCB
عندما اقوم بتنفيذ البرنامج يضع الكومبايلر خط ازرق تحت إسم الكلاس ويظهر هذين الخطأين

1-

DirectX.Capture.Capture does not implement interface member DShowNET.ISambleGraberCB.BufferCB(double,system.intptr
,int)
2-
DirectX.Capture.Capture does not implement interface member DShowNET.ISambleGraberCB.SambleCB(double
DShowNET.IMediaSamble)

أتمنى بأن اجد حل لهذه المشكلة عندك ولكم جزيل الشكر ياأخي العزيز ويا حبذا لو تشرحلي مالذي يقصده الكومبايلر بالــ Implement

هذا خطأ معروف

السبب انه انت مااضفت الدالة BufferCB الى الكلاس المشتق
فيجب عند الاشتقاق من الانترفيس وضع جميع دوال واعضاء الانترفيس في الكلاس الجديد

لاحظ لو كتبت هذا الكود وشغلت البرنامج

PHP كود :
class Vb4arb IDisposable
    
{

    } 


بيطلع نفس الخطأ الي عندك

السبب اني ماضفت دالة Dispose الى الكلاس

والحالة نفسها عندك

-

محرر السي شارب يضيف الاعضاء اوتماتيكيا

لعمل ذلك حرك الفأرة نحو اسم الانترفيس وبيطلع لك خط بنفسجي



ثم حرك الفأرة نحو الخط البنفسجي



بعدها سوف يتم ملأ الكلاس اوتماتيكيا بأعضاء الانترفيس

مثلا لو سويت الحركة هذي حق الانترفيسIFeatureSupport راح يطلع :

PHP كود :
class Vb4arb IFeatureSupport
    
{

        
#region IFeatureSupport Members

        
public Version GetVersionPresent(object feature)
        {
            throw new 
NotImplementedException();
        }

        public 
bool IsPresent(object featureVersion minimumVersion)
        {
            throw new 
NotImplementedException();
        }

        public 
bool IsPresent(object feature)
        {
            throw new 
NotImplementedException();
        }

        
#endregion
    




--


بالنسبة لImplement فهي تعني "إنجازات" او "وظائف"

وفي البرمجة . اي كود تنفيذي يسمى Implement

يعني اي كود داخل (دالة او خاصية) يسمى Implement مثلا

كود :
private void Form1_Load(object sender, EventArgs e)
        {
[COLOR="#FF0000"]            MessageBox.Show("vb4arb");
            int s = 5;
            var a = "abppl";

            for (int i = 0; i < 10; i++)
            {
                s = i;
            }[/COLOR]
            //...
            //...
        }


الملون بالاحمر يسمى Impelement حق الدالة Form_load
الرد }}}
تم الشكر بواسطة: ربيع



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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم