• 1399/10/26

Disposable how work? :

سلام استاد

من کار متد و اینترفیس disposable

(دیسپوزیبل)  رو متوجه نشدم

دقیقا کارش چیه

 

من کامل نتونستم درکش کنم ولی اونطور که فهمیدم فک کنم به اون کد ما. پایان میده(میبندتش) یعنی تقریبا مثل Close یا break عمل میکنه ولی بر پایه شی گرایی و کد خوانا

ایا درست گفتم

اگه نه کار دقیقش رو بفرمایید ممنون

  • 1399/11/17
  • ساعت 22:11

دوست عزیز اینترفیسی در گروه زبان های برنامه نویسی Net. وجود داره به نام IDisposable که در اون متد پر اهمیتی با نام Dispose به عنوان قرارداد برای کلاس های implement کننده مشخص شده.

همونطور که می دونین چه ما سعی کنیم از واسطه ای برای پایگاه دادۀ خودمون استفاده کنیم(مثل Entity Framework) و چه استفاده نکنیم، برای واکشی، ویرایش، حذف و یا اضافه کردن اطلاعات به پایگاه داده(هرکدوم از عملیات های (CRUD(Create - Read - Update - Delete) باید هربار ارتباط خودمون رو با اون پایگاه داده باز و در انتهای عملیات، ارتباط خودمون رو ترجیحاً و برای امنیت بیشتر ببندیم.

اگر که از واسطه ای(Provider) در این بین استفاده نکنیم، مجبور میشیم خودمون این مسئله رو به صورت دستی و با کد حل کنیم و اصطلاحاً این ارتباط رو close کنیم.

اما در واسطه ای مثل Entity Framework، بخشی با نام GarbageCollector وجود داره که اگر ببینه متد Dispose رو در ریپوزیتوری خودمون تعریف کردیم، خودش به صورت خودکار از همون متد تعریف شده استفاده می کنه و بدون اینکه ما احتیاج به صدا زدن اون متد داشته باشیم، خودش اون متد رو جهت بستن ارتباط با پایگاه داده استفاده می کنه.

اما گاهی اوقات هم هست که باز هم با وجود یک واسطه مجبور بشیم خودمون با کد مشخص کنیم چه زمانی ارتباط با پایگاه داده بسته بشه و در اون صورت هم از قائدۀ چندریختی ها(Polymorphism) استفاده می کنیم و کلاسی که مد نظرمونه و توی تنظیمات هستۀ خود دات نت از قرارداد IDisposable تبعیت کرده رو در قالب قرارداد بالاسرش(IDisposable) نمونه سازی میشه و به کمک کدهای خود ما متد Dispose اون در صورت نال نبودن ارتباط با پایگاه داده صدا زده میشه.


logo-samandehi