نحوه غیر فعال کردن یک کلاس در لحظه در سی شارپ
من میخوام بتونم رفتار این کلاس رو کنترل کنم به شکلی که بتونم در هر زمانی که خواستم اون رو غیر فعال کنم
منظورم از غیر فعال اینه که در حالت اجرای برنامه در زمان خاصی وارد اون نشه
یه همچین چیزی :
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
{
}
set { _comoditycode = value; }
}
public string CommodityName
{
get { return _comodityname; }
set { _comodityname = value; }
}
}
ولی اگر اون قسمت کامنت ها رو فعال کنم این خطا رو میده :
Severity Code Description Project File Line Suppression State
Error CS0161 'MainWindow.MyCustomModel_Commodity.CommodityCode.get': not all code paths return a value
پاسخ هوش مصنوعی
برای اینکه کد شما به درستی کار کند و فقط در صورتی که `_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` باشد، یک استثنا پرتاب خواهد شد. این به شما کمک می کند تا دسترسی به این پروپرتی را کنترل کنید.
منظور از غیرفعال کردن مشخص نیست ولی شما میتونید کلاستون رو از اینترفیس IDisposable مشتق کنید. دقت کنید اینترفیس IDisposable کلاس رو از حافظه بیرون نمیبره بلکه منابع مدیریت نشده کلاس رو پاک میکنه.
public class myClass : IDisposable
{
}
برای کسب اطلاعات بیشتر در مورد نحوه Dispose کردن کلاس میتونید لینک زیر رو مطالعه کنید یا توی گوگل جستجوهای بیشتری رو انجام بدید.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress
- قرار دادن مقادیر ارسالی یک ستون از جدول به صورت سطری در استیمول