مسیرراهها
نظرات مطالب
C# 8.0 - Pattern Matching
بهبود «Property Patterns معرفی شدهی در C# 8.0» در C# 10.0
در C# 8.0 برای بررسی خواص تو در تو باید از الگوی زیر استفاده کرد:
....{property: {subProperty: pattern}}....
....{property.subProperty: pattern}....
یک مثال:
رکورد زیر را در نظر بگیرید:
public record TestRec(string name, string surname);
string TakeFourSymbols(TestRec obj) => obj switch { TestRec { name: {Length: > 4} } rec => rec.name.Substring(0,4), // ... };
string TakeFourSymbols(TestRec obj) => obj switch { TestRec { name.Length: > 4 } rec => rec.name.Substring(0,4), // ... };
نظرات مطالب
بازنویسی سطح دوم کش برای Entity framework 6
من اساسا مخالف هر نوع generic repository هستم. شما الان یک کد «ساده» و «زیبای» EF را تبدیل به یک کد پیچیدهی غیرقابل درک کردید. این نه پیشرفتی است و نه بر اساس هیچکدام از الگوهای برنامه نویسی.
در این زمینه یک سری مطلب در سایت هستند برای مطالعه:
-Repositoryها روی UnitOfWork ایده خوبی نیستند
- پیاده سازی generic repository یک ضد الگو است
- استفاده از الگوی Repository در EF Code First کار اضافی است.
- 5 نکته برای بهبود کیفیت کدهای برنامهای که از یک ORM استفاده میکند
در این زمینه یک سری مطلب در سایت هستند برای مطالعه:
-Repositoryها روی UnitOfWork ایده خوبی نیستند
- پیاده سازی generic repository یک ضد الگو است
- استفاده از الگوی Repository در EF Code First کار اضافی است.
- 5 نکته برای بهبود کیفیت کدهای برنامهای که از یک ORM استفاده میکند
نظرات مطالب
MVC Scaffolding #2
- لینک مطلب «پیاده سازی generic repository یک ضد الگو است » را براشون ارسال کنید تا مطالعه کنند.
- در متن عنوان شده « ModelType: برای ذکر صریح کلاس مورد استفاده در تشکیل کنترلر بکار میرود. اگر ذکر نشود، از نام کنترلر حدس زده خواهد شد.» ModelType دقیقا مانند نحوه مقدار دهی نوع مدل در صفحه دیالوگ استاندارد اضافه کردن یک View در VS.NET مقدار دهی میشود؛ یک fully qualified name است. با این شرط که اسمبلی مربوطه به پروژه اصلی ارجاع دارد و یکبار هم کل پروژه Build شده.
- در متن عنوان شده « ModelType: برای ذکر صریح کلاس مورد استفاده در تشکیل کنترلر بکار میرود. اگر ذکر نشود، از نام کنترلر حدس زده خواهد شد.» ModelType دقیقا مانند نحوه مقدار دهی نوع مدل در صفحه دیالوگ استاندارد اضافه کردن یک View در VS.NET مقدار دهی میشود؛ یک fully qualified name است. با این شرط که اسمبلی مربوطه به پروژه اصلی ارجاع دارد و یکبار هم کل پروژه Build شده.
اشتراکها
language-agnostic به چه معناست؟
وقتی راه حل مساله ای language-agnostic نامیده میشود، به این معناست که راه حل مستقل از ویژگیهای زبانی میباشد. به عنوان مثال، الگوهای طراحی language-agnostic هستند، زیرا در شیوه توصیف آنها پیاده سازی خاص مهم نیست چون آن را با کل یا زیر مجموعه ای از الگوها نشان میدهند(برخی از الگوهای طراحی را میتوان بدون OOP اجرا کرد). UML یا BPMN یا ERM یا حتی یک الگوریتم که به روش pseudo-code نوشته شده است language-agnostic میباشد. هر چیزی که مفهوم برنامه نویسی داشته باشد، اما در یک زبان خاص توصیف نشده باشد، میتواند language-agnostic نامیده شود.
نظرات مطالب
معماری لایه بندی نرم افزار #1
من هم وقتی کار بر روی این معماری رو شروع کردم با مشکلات زیادی روبرو بودم و خیلی از مسائل برای من هم نامانوس و غیر قابل هضم بود. ولی بعد از اینکه چند پروژه نرم افزاری رو با این معماری پیاده سازی کردم فهم بیشتری نسبت به اون پیدا کردم و خیلی از مشکلات موجود رو با دقت بالا و با در نظر گرفتن تمامی الگوها رفع کردم. امیدوارم این حس مشترک بوجود بیاد. ولی دلیل اصلی ایجاد تکنولوژیها و معماریهای جدید اختلاف نظر بین علماست. این اختلاف نظر در اکثر مواقع میتونه مفید باشه. ممنون دوست عزیز
بازخوردهای دوره
استفاده از Async و Await در برنامههای دسکتاپ
یک نکتهی تکمیلی
اگر از الگوی MVVM استفاده میکنید، یک پیاده سازی AsyncCommand را در اینجا میتوانید ملاحظه کنید:
Patterns for Asynchronous MVVM Applications: Commands
اگر از الگوی MVVM استفاده میکنید، یک پیاده سازی AsyncCommand را در اینجا میتوانید ملاحظه کنید:
Patterns for Asynchronous MVVM Applications: Commands
نسخه به روز رسانی شده مطلب جاری برای ASP.NET Core Identity