PDA

View Full Version : IList,Interfaceدر سی شارپ



#Faranak
سه شنبه 10 فروردین 1389, 11:35 صبح
با سلام به همه دوستان.

2سوال داشتم:
اول اینکه وقتی تعیین می کنیم یک classاز ilist استفاده کندبه صورت زیر:

class

MyDataSource:IList

با توجه به اینکه ilist یک collectionاست یعنی یک مجموعه است که یک سری امکانات به ما می دهد.
مگه نباید اعضای ilist(فقط اعضا نه پیاده سازی بدنه آنها)در کلاسی که ساختیم آورده شود پس چرا وقتی منilist: را جلوی نام کلاسم می ذارم اعضایilistدرکلاسم list نمیشوند.در
مورد interfaceهم به همین صورت .یک interface نوشتم به نام istudentودریک کلاس دیگرکه به صورت زیر آن را نوشته ام:


class

MFTStudent:IStudent

اعضای interfaceدر کلاسم آورده نمی شوند.سوال دوم این که:
با توجه به این که امکان حذف هیچ یک از اعضای interface در کلاس وجود ندارد طبیعتا بعضی از اعضا توسط کلاس پیاده سازی نمیشوند در این صورت visual studioهنگام اجرا به دلیل عدم پیاده سازی آنها error می گیره مثلا یک پراپرتی در interface است که در کلاس فقط وجود داره اما پیاده سازی نشده که این باعث error می شه .چی کار کنم
بجه ها اگه جواب سوال منو می دونید راهنمایی کنید ممنون.

behzad1986
سه شنبه 10 فروردین 1389, 11:54 صبح
سلام دوست عزيز
واسه سوال اول rebiuld كنيد من الان تست كردم ليست ميشن

واسه سوال دوم سعي كنيد از چند interface استفاده كنيد به طوري كه هر interface نسبت به interface خصوصياتش بيشتري داشته باشد و در كلاس هات از intrface كه خصوصيات مورد نظر تو داره استفاده كني (يا حتي از چند interface)

#Faranak
سه شنبه 10 فروردین 1389, 14:50 عصر
سلام دوست عزيز
واسه سوال اول rebiuld كنيد من الان تست كردم ليست ميشن

واسه سوال دوم سعي كنيد از چند interface استفاده كنيد به طوري كه هر interface نسبت به interface خصوصياتش بيشتري داشته باشد و در كلاس هات از intrface كه خصوصيات مورد نظر تو داره استفاده كني (يا حتي از چند interface)

من پروزمو rebuild کردم errorهای زیرو گرفتم:
consoleApplication.mydatasource does not implement interface member system .collections.ilist.add(objec
(
وهمین error برای اعضای دیگر ilist مثلcontains,...

آیا باید using خاصی رو بنویسم من فقط using system .collectionsرو نوشتم.

لطفا بیشتر راهنمایی کنید .
ممنون .

Amir Oveisi
سه شنبه 10 فروردین 1389, 14:55 عصر
پس چرا وقتی منilist: را جلوی نام کلاسم می ذارم اعضایilistدرکلاسم list نمیشوند

این کار رو بکنید:

http://amiroveisi.persiangig.com/image/ilist.jpg

برای سوال دوم باید عرض کنم که این از ویژگی های interface هست که حتما باید در کلاس مقصد پیاده سازی بشه. در صورتی که هدف شما مغایر با این هست باید نسبت به طراحی interface تون تجدید نظر کنید.

اون error هم واسه اینه که شما از interface استفاده کردید اما اونو تو کلاس پیاده سازی نکردید.

موفق باشید

#Faranak
سه شنبه 10 فروردین 1389, 15:40 عصر
این کار رو بکنید:

http://amiroveisi.persiangig.com/image/ilist.jpg

برای سوال دوم باید عرض کنم که این از ویژگی های interface هست که حتما باید در کلاس مقصد پیاده سازی بشه. در صورتی که هدف شما مغایر با این هست باید نسبت به طراحی interface تون تجدید نظر کنید.

اون error هم واسه اینه که شما از interface استفاده کردید اما اونو تو کلاس پیاده سازی نکردید.

موفق باشید



ممنون از راهنمایی خوبتون:قلب:
در مورد سوال دوم مثلا همین ilistا یعنی حتی اگر ما همه ی امکانات ilist رالازم نداشته باشیم باید آنها را پیاده سازی کنیم؟

Amir Oveisi
سه شنبه 10 فروردین 1389, 16:03 عصر
ببینید اصول وجود interface همینه در اصل. البته شما میتونید مثلا یک متد interface رو توی کلاس برای تعریفش هیچ کدی ننویسید و یک متد خالی داشته باشید که فقط اسم داره و هیچ کاری انجام نمیده! که این کار در واقع به جور بازی با interface (مثل بازی با کلمات) میشه و در اصطلاح ساده تر کار مسخره ای هست.

توصیه من این هست که خودتون interface جدید و مطابق با ساختار برنامتون طراحی کنید و از اون استفاده کنید. مگر اینکه به دلایلی مجبورید از interface های خود .NET استفاده کنید که در اینصورت فکر کنم اگر توضیح بیشتری بدید میشه بهتر راهنمایی کرد.

موفق باشید