مرجع تخصصی برنامه نویسان

بزرگترین انجمن برنامه نویسان فارسی زبان

عبارت where T : class در الگوی generic repository به چه معناست؟

چهارشنبه, 10 اردیبهشت 1399 16:40

عبارت where T : class در الگوی generic repository به چه معناست؟

با سلام و احترام 

در الگوی جنریک ریپوزیتوری الگویی به شکل زیر داریم:

public interface IGenericRepository<T> where T : class
{
IEnumerable<T> GetAll();
T GetById(object id);
void Insert(T obj);
void Update(T obj);
void Delete(object id);
void Save();
}
قسمت where T : class چه مفهومی دارد؟
پنج شنبه, 11 اردیبهشت 1399 22:15

سلام دوست عزیز

ما توسط جنریک ها می توانیم یک متد یا یک کلاس بسازیم که مقدار یا پارامتر وردی در زمان استفاده مشخص شود

در الگوی جنریک ریپازیتوری هم به همین شکل است

ما یک ریپازیتوری ساخته ایم که فعلا مشخص نیست با کدام (مدل-جدول) قرار است کار کند

پس یک حرف یا لغت دلبخواه مثل T انتخاب می کنیم که می تواند هر چیزی باشد

T به عنوان پارامتر ورودی ما عمل می کند

در زمان استفاده از جنریک ریپازیتوری ما مدل خود به آن پاس می دهیم

پس T نماینده مدل ما است که می تواند هر چیزی باشد

شما در هنگام نمونه سازی از ریپازیتوری مقدار را به آن ارسال می کنید

publicinterfaceIGenericRepository<person> repository;

استفاده از کلمه کلیدی هم جهت تعریف شرط بر روی ورودی این جنریک ریپازیتوری است

که به آن   constraint می گویند

where T : person

یعنی t کلاس person یا کلاسی باشد که از آن ارث بری کرده است

where t : struct 

یعنی T  از نوع value type باشد

where T : class 

یعنی T از نوع  refrence type ّباشد

where T : class ,new()

یعنی T از نوع  refrence type ّباشد و Constructor داشته باشد

ارسال پاسخ برای این تاپیک