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

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

کاربر سایت

ahmadsaeedy@gmail.com

عضویت از 1396/06/31

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

  • چهارشنبه 10 اردیبهشت 1399
  • 16:40
تشکر میکنم

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

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

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 چه مفهومی دارد؟

پاسخ های این پرسش

تعداد پاسخ ها : 1 پاسخ
کاربر سایت

psymhosein

عضویت از 1399/02/11

  • پنجشنبه 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 داشته باشد

کاربرانی که از این پست تشکر کرده اند

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

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)