السلام عليكم ورحمة الله وبركاته كيف احوالكم اخواني الأفاضل اساتذة البرمجة العرب
عساكم بخير وصحة وسلامة ان شاء الله
إخواني الأفاضل انا قمت ببرمجة كلاس واريد ان اشتقه من إنترفيس انا قمت ببرمجتها كما نفعل عندما تشتق كلاس من الإنترفيس IDisposal
ولكن عند تنفيذ البرنامج يضع لي علامة خطأ ويخبرني ان الكلاس هذا لا يمكنه عمل Implement من الإنترفيس المطلوبة مع اني لم افهم مامعنى كلمة Implement
متى يحصل مثل هذه الأخطاء
ارجوا المساعدة ولكم جزيل الشكر
[COLOR="#000080"]قمت بعمل Implement لنفس الواجهه IDisposal وعرفت السبب
وهو ان الفئة لايمكن وراثتها Public NotInheritable Class AAA والخطأ يظهر على اعادة القيادة لــDispose[/COLOR]
ولكن انا رايت الكثير من الكلاسات التي تشتق من الإنترفيس IDisposal ??????
هل تقصد بكلامك انه لا يمكن الإشتقاق من الواجهات بشكل عام لان حتى في كلاسات الدوت نت هناك الكثير منها مشتق من واجهات
<br> كتب :ولكن انا رايت الكثير من الكلاسات التي تشتق من الإنترفيس IDisposal ??????
هل تقصد بكلامك انه لا يمكن الإشتقاق من الواجهات بشكل عام لان حتى في كلاسات الدوت نت هناك الكثير منها مشتق من واجهات
IDisposal ؟؟
لاتوجد هذه الانترفيس عندي ، إنما توجد عندي فقط IDisposable
والكود ادناه يعمل 100%
PHP كود :
public class Vb4arb : IDisposable
{
#region IDisposable Members
public void Dispose()
{
//implimtion
}
#endregion
}
آسف اخي اخطأت بكتابة إسم الإنترفيس المهم انه بإمكاننا توريث كلاس من إنترفيس
طيب انا استخدم مكتبة للتحكم بالكاميرا الرقمية 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
<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 feature, Version 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