Extension Methods
Extension methods شما را قادر می‌سازند تا به type‌های موجود بدون اینکه کلاس جدیدی ایجاد کنید که از آن‌ها به ارث رفته باشند، متد‌های جدیدی اضافه نمائید و بیشترین استفاده آن‌ها در System.Collections.IEnumerable است. به طور مثال این امکان وجود ندارد که بتوان بر روی IEnumerable‌ها از دستور Foreach استفاده کرد. برای نمونه من برای اینکه foreach داشته باشم، آن‌را به لیست تبدیل می‌کردم و سپس از ...
استفاده از OpenID در وب سایت جهت احراز هویت کاربران
قبلا شرح مختصری در زمینه OpenID در اینجا گفته شد. حال می‌خواهیم این امکان را در پروژه خود بکار ببریم، جهت این کار باید ابتدا یک پروژه ایجاد کرده و از کتابخانه‌های سورس باز موجود استفاده کرد. 1- ابتدا در ویژوال استودیو یا هر نرم افزار دیگر یک پروژه MVC ایجاد نمایید. 2- نوع Internet Application و برای View Engine سایت Razor را انتخاب نمایید. ...
StringBuilder
بهترین روش برای تولید و دستکاری یک رشته (string) طولانی و یا دستکاری متناوب و تکراری یک رشته استفاده از کلاس StringBuilder است. این کلاس در فضای نام System.Text قرار داره. شی String در دات‌نت‌فریمورک تغییرناپذیره (immutable)، بدین معنی که پس از ایجاد نمی‌توان محتوای اونو تغییر داد. برای مثال اگر شما بخواین محتوای یک رشته رو با اتصال به رشته‌ای دیگه تغییر بدین، اجازه اینکار را به شما داده نمی‌شه. درعوض به‌صورت خودکار رشته‌ای جدید در حافظه ا ...
OpenID چیست؟
چند وقتی میشه که دنبال روش‌های OpenID هستم که ببینم چطوری کار می‌کنند، خودم هم تازه شروع کردم خوب قبل از هر چیزی اول ببینیم مفهوم OpenID چی هست؟ و کم کم جلو میریم و مثال هایی معرفی می‌کنیم. OpenID به شما اجازه می‌دهد با استفاده از اکانت (نام کاربری) که در یک سایت دارید بتوانید به سایت‌های متفاوتی وارد شوید (لاگین کنید) بدون این که نیاز به ثبت نام دوباره در آن سایت‌ها داشته باشید. نمونه بارز ...
اصول برنامه نویسی موازی درNET. نسخه 4 بخش اول - 2
تنظیم وضعیت برای یک Task در مثال ذکر شده در قسمت قبل هر چهار Task یک عبارت را در خروجی نمایش دادند حال می‌خواهیم هر Task پیغام متفاوتی را نمایش دهد.برای این کار از کلاس زیر استفاده می‌کنیم : System.Action<object> ...
اصول برنامه نویسی موازی درNET. نسخه 4 بخش اول - 1
بدون هیچ مطلب اضافی به سراغ اولین مثال می‌رویم. قطعه کد زیر را در نظر بگیرید : using System; using System.Threading.Tasks; namespace Listing_01 { class Listing_01 { static void Main(string[] args) { Task.Factory.StartNew(() => { Console.WriteLine("Hello World"); }); // wait for input before exiti ...
Data Access Layer based on ADO.NET - Mapper Class
مدتی بود هنگام کار کردن با لایه SqlDataProvider در دات نت نیوک ، به این فکر می کردم که چطور میشه بدون استفاده از کلاس های خود دات نت نیوک  ، از قابلیت Mapping ی که داره استفاده کرد یا به زبان دیگر یه کلاس Mapper ایجاد کرد (شبیه EF) که نیاز به تنظیمات EF نداشته باشه ولی Mapping را انجام دهد. (برای آن دسته از دوستانی که با DotNetNuke آشنایی ندارند باید عرض کنم که DNN یک معماری سه لایه دارد شامل DataProvider  ، SqlDataProvider ، Con ...
تعریف نوع جنریک به صورت متغیر
در تهیه مثال Auto Mapping به کمک امکانات توکار NH 3.2 به این مورد نیاز پیدا کردم:بتوان نوع متد جنریک را به صورت متغیر تعریف کرد و این نوع در زمان کامپایل برنامه مشخص نباشد. مثلا چیزی شبیه به این مثال:using System;namespace GenericsSample{ class TestGenerics { public static void Print<T>(T data) { Console.WriteLine("Print<T>"); } } class Program { static void Main(string[] ar ...
ایجاد لیستی از کلاسی جنریک
کلاس جنریک زیر را در نظر بگیرید:public class Column<T> { public string Name { set; get; } public T Data { set; get; } } مشکلی که با این نوع کلاس‌ها وجود دارد این است که نمی‌توان مثلا لیست زیر را در مورد آن‌ها تعریف کرد:IList<Column<T>> myList = new List<Column<T>>(); به عبارتی می‌خواهیم یک لیست از کلاسی جنریک داشته باشیم. راه حل انجام آن به صورت زیر است:using System.Collections; namespace Tests { ...
کاربردهای Static reflection - قسمت اول
در مورد static reflection مقدمه‌ای پیشتر در این سایت قابل مطالعه است (^) و پیشنیاز بحث جاری است. در ادامه قصد داریم یک سری از کاربردهای متداول آن‌را که این روزها در گوشه و کنار وب یافت می‌شود، به زبان ساده بررسی کنیم. بهبود کدهای موجود از static reflection در دو حالت کلی می‌توان استفاده کرد. یا قرار است کتابخانه‌ای را از صفر طراحی کنیم یا اینکه خیر؛ کتابخانه‌ای موجود است و می‌خواهیم کیفیت آن‌را بهبود ببخشیم. هدف اصلی هم «حذف رشته‌ها» و «اس ...