کانال توسعه دهندگان سی شارپ
154 subscribers
32 photos
5 videos
6 files
87 links
اینجا از تجربیاتم توی برنامه نویسی می نویسم🙌
یک عدد دات نت کار
گیت هاب من:
https://github.com/hassanrafatjoo
Download Telegram
ولی انصافا بعضی وقتا محدودیت هم بد نیستا
امروز یاد گرفتم چطور گربه شکن گوشیم رو متصل کنم به لپ تاپ😁
1
102 نفر شدیم مبارکا باشه😁

دنبال اینم با وجود امتحانات پایان ترم میت بزارم که با همدیگه داکیومنت بخونیم
1
یکی از قابلیت های جالبی که ویژوال استودیو از نسخه های قبل تا الان داره قابلیت Add Client-Side Library هست ینی کتابخونه های سمت کاربر که شما اگر بخواید دستی اضافه کنید اذیت میشید

به همین خاطر روی نام پروژه یا پوشه wwwroot که فایل های استاتیک خودمون رو داخلش قرار میدیم کلیک راست میکنیم و از بخش Add گزینه Add Client-Side Library رو میزنیم و بعد مشخص میکنیم که از چه CDN ای اون دانلود بشه مثلا CDNjs یا jsDeliver و بعد نام کتابخونه مد نظر رو قرار میدیم مثلا بوت استرپ،جی کوئری یا هر چیز دیگه ای که دنبالش هستیم

چندین مزیت داره:

-شما فقط فایل هایی که توی اون لایبرری دارید لود میکنید
-نیازی نیست دستی اضافه کنید که اذیت بشید
-حتی اگر پوشه lib که پوشه اصلی هست حذفش کنید و پروژه رو بدید به یکی دیگه بازم میتونه با یه کلیک راست روی پروژه و انتخاب گزینه Restore Client-Side Libraries خیلی راحت میتونه همه اون کتابخونه رو دوباره دانلودش کنه

بعد از این که این قابلیت رو اضافه کردید خودش یه فایل json بهتون میده به اسم libman.json چرا که اسم خود این ابزار Libman هست و از اون جا میتونید کتابخونه های دانلود شده رو مدیریتشون کنید

توی بحث بیلد کردن هم خیلی راحت تره استفاده از این ابزار
1
قدیمیا یه حرف قشنگی داشتن هر چقدر درخت پر بارتر سر به زیر تر
هر چقدر میری جلو متوجه میشی یه سانتی متر از یه اقیانوس عظیم و بزرگ بوده
پس تا میتونید عمیق بشید توی بک اند و لایه های متفاوتش رو درک کنید

شخصا خودم تا متوجه نشم مثلا فلان متد یا اکستنشن متد پارامترهایی که میگیره چیه مغزم آروم نمیگیره😅 یا مثلا چرا فلان پارامتر رو باید به حالت نال قرار بدیم

نگران فراموش کردن هم نباشید شما اگر روزانه و پیوسته یاد بگیرید یادتون نمیره
👍21
اگر قراره باشه میت برگزار کنم میتونید صبح ها شرکت کنید؟( خودم بیشتر صبح ها میتونم برگزار کنم)
Anonymous Poll
33%
آره میتونم
33%
نه نمیتونم
33%
دیدن نتایج
1
سلام دوستان بالاخره منم وصل شدم😂❤️
1
کد نمیومد به گوشی با ایمیل که توی احراز هویت دو مرحله ای بود تونستم بیام
1
توی این اوضاع اما من امید خودم رو از دست ندادم و بیشتر رفتم سی شارپ و asp core خودم رو قوی کردم

پیوسته برید جلو حتی اگر شرایط بد باشه
1👍1
اینجوری که من دارم می بینم فکر کنم فقط من بودم که این چند روز نت نداشتم ظاهرا که همه داشتن و ما رکب خوردیم😂
3
کانال توسعه دهندگان سی شارپ
چند تا پروکسی برای تلگرام ویندوز: https://t.me/proxy?server=195.254.165.4&port=13&secret=EERighJJvXrFGRMCIMJdCQ https://t.me/proxy?server=195.254.165.140&port=9443&secret=EERighJJvXrFGRMCIMJdCQ https://t.me/proxy?server=195.254.165.20&port=9443&secret=E…
دوستان توجه کنید پروکسی هایی که بخش secret هم طول کمتری دارن و هم از حروف a تا d یا اصطلاحا همون هگزادسیمال خودمون هستن روی ویندوز قابلیت استفاده رو دارن
1
ظاهرا که نت یه مقدار بهتر شده وضعیتش و وی پی ان های ویندوز هم در حال حاضر در دسترس هستن
1
فعلا Nuget Package Manager با وی پی ان در دسترس هست

یه تست کنید ببینید بدون وی پی ان یا با dns میاد یا نه
1
امروز میخوایم راجع به وراثت یا Inheritance صحبت کنیم

وراثت یا Inheritance در واقع یکی از کاربردهایی که برای ما داره اینه که باعث میشه ما کدهای کمتری بنویسیم و اون برنامه یا وبسایتی که در حال ساختنش هستیم مقیاس پذیر(Scaleablity) باشه ینی بتونیم اون ها رو گسترششون بدیم


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

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

مثلا اگر در یک وبسایتی بخوایم امکان این رو به کاربران بدیم که عضو بشن اول از همه موجودیت ها رو مشخص میکنیم:

شناسه(UserID)

نام کاربری(UserName)

نام و نام خانوادگی(Full Name)

نقش کاربری(User Role)

شماره تلفن(Phone Number)


تصور کنید توی این وبسایت ما چندین نقش کاربری مثل: عضو عادی،مدیر،نویسنده مقاله، مدیر بخش فروشگاه و... داریم . اگر قرار باشه که ما برای هر کدوم از این نقش ها یک کلاس جداگانه ایجاد کنیم از لحاظ مقیاس پذیری کارمون خیلی سخت میشه به همین خاطر یک ساختار مثل کلاس مشخص میکنیم و یکبار موجودیت ها رو مشخص میکنیم و بعد هر جا که دوست داشتیم ازش استفاده میکنیم

#شی_گرایی
2
public class User
{
public int UserId { get; set; }
public string UserName { get; set; }
public string FullName { get; set; }
public string PhoneNumber { get; set; }
}
2
کانال توسعه دهندگان سی شارپ
public class User { public int UserId { get; set; } public string UserName { get; set; } public string FullName { get; set; } public string PhoneNumber { get; set; } }
اینجا ما اول از همه اومدیم یه ساختار مشخص کردیم و گفتیم که آقا ما یه یوزر داریم که این خصوصیت ها رو داره

بالاخره همه کاربران چه مدیر چه عضو عادی و نقش های دیگه همشون آیدی و شناسه و نام و شماره تماس و اینا دارن دیگه درسته؟ پس منطقی نیست هر بار بیایم اون ها رو توی کلاس های جداگانه و برای هر نقش کاربری تعریفش کنیم

حالا یه کلاس ادمین میسازیم:

public class Admin : User // Admin از User ارث می‌برد
{
public string Department { get; set; }
public bool CanManageUsers { get; set; }
}


برای این که یه کلاس بتونه از کلاس دیگه ارث بری کنه از علامت نقل قول یا ":" استفاده میکنیم

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

توی کلاس ادمین حالا علاوه بر این که هر ادمین یه نام کاربری و نام و نام خانوادگی و شماره تلفن و اینا داره توی خصوصیت(Property) میگیم Department ینی این کاربر مدیر کدوم یک از بخش های سایت هست مثلا مدیر کل یا Administrator یا مدیر بخش مقالات( Blog Manager)

یه مثال کاربردی دوباره میزنم تا بحث دوباره براتون قابل لمس تر بشه
2
   // 1. کلاس پایه (والد) - User
public class User
{
// خصوصیات مشترک همه کاربران
public int UserId { get; set; }
public string UserName { get; set; }
public string FullName { get; set; }
public string PhoneNumber { get; set; }

// متد مشترک
public virtual void DisplayInfo()
{
Console.WriteLine($"👤 User ID: {UserId}");
Console.WriteLine($"📛 Username: {UserName}");
Console.WriteLine($"👨‍💼 Full Name: {FullName}");
Console.WriteLine($"📞 Phone: {PhoneNumber}");
}
}


این کلاس یوزر که شامل چندین تا پراپرتی هست( بعد میگم که اینا چی هستن)

و بعد یک متد ایجاد کردیم که قبلا راجع به متد صحبت کردیم با هشتگ #شی_گرایی میتونید پیداش کنید و گفتیم دیتای کاربر رو در خروجی نشون بده اما بریم ببینیم چجوری میشه پیاده سازیش کرد
3💔1
کانال توسعه دهندگان سی شارپ
// 1. کلاس پایه (والد) - User public class User { // خصوصیات مشترک همه کاربران public int UserId { get; set; } public string UserName { get; set; } public string FullName { get; set; } public string PhoneNumber…
ویدئوها رو به زودی میزارم اینجا تلگرام
فعلا که چند روزیه انقد به سلامتی خودم نرسیدم دارم به فنا میرم
یکم بهتر شم میزارمش
2💔1