نظرات مطالب
آشنایی با NHibernate - قسمت اول
@DotNetCoders
سورس اصلی کتابخانه، به زبان سی شارپ است اما نهایتا شما از اسمبلی‌های کامپایل شده مربوطه استفاده خواهید کرد و از اینجا به بعد دیگر تفاوتی نمی‌کند که زبان دات نتی مورد استفاده چی باشد.

@dadoo
باید دقت داشته باشید که LINQ به تنهایی فقط یک language feature است و نه یک data access technology . بنابراین باید دقیقا linq to sql یا linq to entities را مشخص کرد.
سابقه نزدیک به یک دهه پروژه اصلی Hibernate‌ که توسط جاوا کارها توسعه داده شده، در این فریم ورک لحاظ شده که از هر لحاظ نسبت به LINQ to entities اون رو پخته‌تر کرده. ضمنا پروایدر LINQ هم برای NH اخیرا توسعه داده شده و از این لحاظ کم و کسری ندارد.
linq to sql برای اس کیوال سرور توسعه داده شد. بعد مایکروسافت اومد اون رو با linq to entities تکمیل کرد (البته linq to sql مطابق وبلاگ رسمی برنامه نویس‌های MS هنوز هم توسعه پیدا می‌کنه و در دات 4 شاهد اون خواهیم بود) و توسط linq to entities امکان استفاده از سایر دیتابیس‌ها هم فراهم شده البته اگر پروایدر آن موجود باشد که تعدادی از آن‌ها هم تجاری هستند. اما با NH این مشکل رو ندارید چون تقریبا همه نوع دیتابیس معروفی را ساپورت می‌کند و رایگان هم هست.
learning curve مربوط به NH بیشتر است از سایر orm ها.
NH از دات نت فریم 2 به بعد را پشتیبانی می‌کند اما linq to entities فقط از دات نت فریم ورک سه و نیم سرویس پک یک به بعد به صورت کامل در دسترس است.

در کل در گوگل nhibernate vs linq را جستجو کنید.

@LoveAjax
محیط مدیوم تراست، امکان ریفلکشن رو حذف می‌کنه و این مورد برای NH و تمام ORM های دیگر نیز مساله ساز خواهد بود. اما برای NH راه حل دارد مطابق مستندات آن:
http://nhforge.org/wikis/howtonh/run-in-medium-trust.aspx
نظرات مطالب
lambda expression در Vb.net
چه اصراری است از زبانی استفاده کنیم که مدرسان ، حرفه ای‌ها ، اپن سورس نویس ها، طراحان الگو و .... از اون استفاده نمی‌کنند. نمی‌خوام وارد بحث مسخره vb.net  بهتر است یا C# بشم فقط اینقدر بدونید بخاطر انتخاب اشتباه زبان که خودم در شروع اون نقشی نداشتم دو سه سال از عمرم پای  vb.net حروم شد و دوست ندارم علاقمند واقعی برنامه نویسی این اشتباه رو انجام بدن.
اگه به بحث‌های ساختاری این دو زبان کاری نداشته باشیم اینکه فضای کار و آموزش از vb.net  استفاده نمی‌کنه بهترین دلیل برای دوری جست از این زبان برنامه نویسه.
کاشکی یک بند دیگه هم به وضعیت فناوری‌های مرتبط با دات نت از دیدگاه مرگ و زندگی! اضافه می‌شد و تازه کارها رو از vb.net  نهی می‌کرد.
ببخشید که این نظر به محتوای فنی پست ارتباطی نداره.
نظرات اشتراک‌ها
50 سالگی زبان BASIC!
اولین زبانی بود که باهاش تونستم یک برنامه بنویسم. بهترین زبان آموزشی در دوران خودش برای آموزش بود.
همونطور که میدونید Basic یک زبان مفسری است و خطوط کد پس از Enter زدن از جهت نحو بررسی می‌شوند.
یکی از نکات مهم‌اش هم که برای من عادت شده بود نوشتن CLS، (یعنی همان Clear Screen) در خط ابتدای برنامه بود که هیچ وقت فراموش نمی‌شد.
به‌هر حال معتقدم کامپایلرهای قوی امروزی هر چیزی که دارند رو مدیون زبان‌هایی مثل همین بیسیک و پاسکال و C هستند.
اشتراک‌ها
پیشنهاد اضافه شدن Nullable reference types به C# 7
در حال حاضر reference types در زبان #C نال پذیر هستند. جهت بالا بردن میزان امنیت زبان، پیشنهاد شده‌است که حالت پیش فرض reference types به غیرنال پذیر تغییر یابد و اگر علاقمند بودید که نال پذیر شوند، همانند nullable value types فعلی مانند int? x، نوع ?T را تعریف کنید. البته این مورد یک پیشنهاد از طرف اعضای تیم سی‌شارپ است و عده‌ای با آن موافق هستند (جهت بالا بردن ضریب امنیت و کاهش null reference exceptions) و عده‌ای خیر (گیج کننده‌است و کدهای فعلی را با مشکل مواجه می‌کند؛ یا خطاهای زیادی را توسط کامپایلر گزارش خواهد کرد).
پیشنهاد اضافه شدن Nullable reference types به C# 7
اشتراک‌ها
برنامه مترجم فایل زبان فروشگاه NopCommerce
در راستای پروژه قبلی (برنامه مترجم گوگل به زبان #C )  که معرفی کردم، این برنامه با گرفتن فایل زبان نوپ کامرس، اون رو به هر زبانی که بخواهید ترجمه می‌کنه (به کمک گوگل) و فایل آماده استفاده را به شما تحویل می‌دهد.
همان طور که در متن هم توضیح دادم، بنده برنامه نویس ویندوز نیستم و این تخصص من نیست. از طرفی چون این برنامه قرار هست در سایت نوپ کامرس معرفی بشود، بهتر هست که از لحاظ ساختاری وضعیت مناسبی داشته باشد، ممنون می‌شم از دوستانی که تخصصشان برنامه‌های ویندوزی هست در بهبود این برنامه به من کمک کنند.
موفق باشید
برنامه مترجم فایل زبان فروشگاه NopCommerce
مطالب
بررسی روش فعالسازی C# 7.1
C# 7.1 به همراه به روز رسانی سوم VS 2017 ارائه شده‌است و اگر در ابتدای کار سعی کنید برای مثال یکی از ویژگی‌های جدید C# 7.1، مانند static async Task Main را توسط آن آزمایش کنید، خطای کامپایل برنامه را دریافت می‌کنید. علت اینجا است که این نگارش خاص حتما نیاز به تنظیمات ویژه‌ای را جهت فعالسازی دارد.


فعالسازی کامپایلر C# 7.1 در VS 2017

ابتدا مسیر Visual Studio -> Build tab -> Advanced را طی کنید:


پس از کلیک بر روی دکمه‌ی Advanced، نیاز است C# 7.1 را انتخاب نمائید:



سؤال: چرا چنین مشکلی با نگارش‌های پیشین زبان سی‌شارپ در ویژوال استودیو وجود نداشت؟

تابحال زبان سی‌شارپ نگارش minor نداشته‌است. همانطور که در تصویر فوق ملاحظه می‌کنید، گزینه‌ی پیش‌فرض زبان مورد استفاده بر روی C# latest major version قرار دارد. این گزینه به معنای انتخاب نگارش 7.0، در این لیست است و نه 7.1. در اینجا major به نگارش 7.0 اشاره می‌کند و یا نگارش‌های 8.0، 9.0 و پس از آن (در صورت ارائه و نصب به روز رسانی‌ها). به همین جهت است که نمی‌توان برای مثال static async Task Main را به صورت پیش فرض و با اعمال آخرین به روز رسانی‌ها کامپایل کرد. برای رفع این مشکل یا می‌توان برای مثال C# 7.1 را مستقیما انتخاب کرد و یا می‌توان «C# latest minor version» را انتخاب کرد که این مورد گزینه‌ی بهتر‌ی است نسبت به حالت C# latest major version و دقیقا به C# 7.1 و یا نگارش‌های پس از آن اشاره می‌کند.


انتخاب زبان در پروژه‌های NET Core.

روش فوق با تمام نگارش‌های NET. کار می‌کند. اما با توجه به اینکه یک چنین گزینه‌هایی برای مثال در VSCode وجود ندارند و یا برنامه‌های NET Core. را می‌توان صرفا از طریق خط فرمان، ایجاد، کامپایل و اجرا کرد، در این نوع پروژه‌ها برای انتخاب زبان باید به صورت ذیل عمل نمود:
<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
       <TargetFramework>netstandard2.0</TargetFramework>
   </PropertyGroup>

   <PropertyGroup>
      <LangVersion>latest</LangVersion>
       <!-- 
          <LangVersion>7.1</LangVersion>
        -->
   </PropertyGroup>
</Project>
در اینجا گزینه‌ی LangVersion را یا می‌توان به 7.1 تنظیم کرد و یا بهتر است مقدار آن‌را مساوی latest قرار داد تا همواره به آخرین کامپایلر نصب شده‌ی توسط SDK اشاره کند.
اشتراک‌ها
مزایای استفاده از اینترفیس و وراثت در OOP

این مقاله به بررسی مزیتهای استفاده از Interface‌ها  همگام با وراثت در برنامه نویسی شی گرا می‌پردازد و مناسب کسانی است که قصد دارند این مفاهیم را در یک مثال فرا بگیرند اینترفیس‌ها کمک شایانی به سازگاری اجزا و کلاسها می‌کند و از اینرو بهتر است آنرا مفهومی یاد گرفت . سورس کدها به زبان C# و VB.NET  می باشد. 

مزایای استفاده از اینترفیس و وراثت در OOP
اشتراک‌ها
انتشار ویرایش سوم کتاب #Head First C
به شخصه یادگیری زبان #C را از این کتاب شروع کردم . اکنون ویرایش سوم این کتاب با پوشش NET 4.5. منتشر شده است. نکته‌ی جالب این است که دیگر خبری از Windows Forms برای رابط کاربری نیست و کاملا با WPF و XAML جایگزین شده است.
همچنین قابلیت‌های جدید NET 4.5. از جمله asynch و await بررسی شده و گریزی هم به الگوی طراحی MVVM نیز زده است.
انتشار ویرایش سوم کتاب #Head First C
نظرات مطالب
امکان مفهوم بخشیدن به رشته‌ها در NET 7.
یک نکته‌ی تکمیلی: امکان مشخص کردن نوع زبان مورد استفاده، توسط StringSyntaxAttribute در Rider


اگر از Rider استفاده می‌کنید، آخرین نگارش آن، امکان ذکر تمام زبان‌های پشتیبانی شده‌ی توسط Rider را به عنوان پارامتر ویژگی StringSyntax دارد (مانند Regular expressions, JavaScript, HTML, CSS, JSON, XML, SQL) که نمونه‌ای از آن‌را در مثال فوق با ذکر #C ملاحظه می‌کنید. پیشتر یک چنین قابلیتی تنها با استفاده از LanguageInjectionAttribute آن میسر بود.