دسته بندی ها
17:09 1401/06/16

نحوه غیر فعال کردن یک کلاس در لحظه در سی شارپ

مشخصات سوال کننده :
کاربر : mojtabahakimian     امتیاز کاربر : 155     رتبه کاربر : 10
دسته بندی : سی شارپ

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 1985
1 نظر
mojtabahakimian : دوستان کسی ایده ای نداره !؟

امتیاز کاربر : 155   رتبه کاربر : 10   تاریخ ثبت : 09:16 1401/06/16
هوش مصنوعی

پاسخ هوش مصنوعی

برای اینکه کد شما به درستی کار کند و فقط در صورتی که `_can_read` درست باشد مقدار `CommodityCode` را برگرداند، باید منطق `get` را در دسترس قرار دهید. به این صورت می توانید از یک شرط برای کنترل این رفتار استفاده کنید:

public class MyCustomModel_Commodity
{
   private bool _can_read = true;

   public void StopReadable()
   {
      _can_read = false;
   }

   public void BeginReadable()
   {
      _can_read = true;
   }

   private long _comoditycode;
   private string _comodityname;

   public long CommodityCode
   {
      get
      {
         if (_can_read)
         {
            return _comoditycode;
         }
         else
         {
            throw new InvalidOperationException("Reading is not permitted at this time.");
         }
      }
      set { _comoditycode = value; }
   }

   public string CommodityName
   {
      get { return _comodityname; }
      set { _comodityname = value; }
   }
}

با این تغییر، در صورتی که کاربر سعی کند `CommodityCode` را بخواند و `_can_read` برابر با `false` باشد، یک استثنا پرتاب خواهد شد. این به شما کمک می کند تا دسترسی به این پروپرتی را کنترل کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 23:17 1401/06/16

منظور از غیرفعال کردن مشخص نیست ولی شما میتونید کلاستون رو از اینترفیس IDisposable مشتق کنید. دقت کنید اینترفیس IDisposable کلاس رو از حافظه بیرون نمیبره بلکه منابع مدیریت نشده کلاس رو پاک میکنه.

 

public class myClass : IDisposable
{

}

برای کسب اطلاعات بیشتر در مورد نحوه Dispose کردن کلاس میتونید لینک زیر رو مطالعه کنید یا توی گوگل جستجوهای بیشتری رو انجام بدید.

How to dispose a class in .net

به این پاسخ امتیاز بدهید    0
امتیاز: 1635 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود