Static Reflection
قابلیت Dynamic reflection یا به اختصار همان reflection متداول، از اولین نگارش‌های دات نت فریم در دسترس است و امکان دسترسی به اطلاعات مرتبط با کلاس‌ها، متدها، خواص و غیره را در زمان اجرا مهیا می‌سازد. تابحال به کمک این قابلیت، امکان تهیه‌ی ابزارهای پیشرفته‌ی زیر مهیا شده است:انواع و اقسام- فریم ورک‌های آزمون واحد- code generators- ORMs- ابزارهای آنالیز کدو ...برای مثال فرض کنید که می‌خواهید برای یک کلاس به صورت خودکار، متدهای آزمون واحد تهی ...
سرعت ایجاد اشیاء CLR
به نظر شما چه تعداد شیء CLR را می‌توان در یک ثانیه ایجاد کرد؟برنامه کنسول زیر دو نسخه معمولی و نسخه پردازش موازی یک آزمایش ساده را برای اندازه گیری این مطلب ارائه می‌دهد:using System;using System.Collections.Generic;using System.Diagnostics;using System.Threading;using System.Threading.Tasks;namespace ObjectInitSpeedTest{ class Program { //Note: don't forget to build it in Release mode. static void Main() { ...
فلسفه وجودی Path.Combine
عموما اکثر کدهای موجود از روش زیر برای ساخت یک مسیر استفاده می‌کنند:string path = somePath + "\\" + filename;اما اگر همین برنامه تحت Mono در لینوکس اجرا شود به مشکل بر می‌خورد زیرا در لینوکس مسیرها این‌بار به صورت زیر هستند:/somepath/filenameبه همین جهت توصیه شده است برای ساخت مسیرها در برنامه‌ی خود، از متد Path.Combine موجود در فضای نام System.IO استفاده کنید زیرا این متد از مقادیر Path.DirectorySeperatorChar و Path.VolumeSeparatorChar جه ...
تغییرات دسترسی به کدها در دات نت 4
دو پروژه‌ی سورس باز XML RPC و Log4Net برای اجرا شدن در برنامه‌های دات نت 4 نیاز به اندکی تغییر در هر دو برنامه‌ی فراخوان و اسمبلی‌های آن‌ها دارند که در ادامه توضیحات مربوطه ارائه خواهند شد.اگر یک پروژه‌ی جدید دات نت 4 را آغاز کنید و سپس ارجاعی را به یکی از اسمبلی‌های ذکر شده اضافه نمائید، اولین خطایی را که حین استفاده مشاهده خواهید نمود، مورد زیر است:Could not resolve assembly "System.Web".The assembly is not in the currently targeted fram ...
مدیریت ساده‌تر امور Async (غیر همزمان) در نسخه‌ی بعدی زبان‌های دات نتی
چندی قبل مطلبی را در این سایت در مورد معرفی الگویی که توسط آن می‌توان اعمال غیر همزمان را به صورت پی در پی انجام داد، مطالعه کردید:انجام پی در پی اعمال Async به کمک Iterators - قسمت اولانجام پی در پی اعمال Async به کمک Iterators - قسمت دومو بحث اصلی مطالب فوق هم این است:"در برنامه نویسی متداول همیشه عادت داریم که اعمال به صورت A –> B –> C انجام شوند. اما در Async programming ممکن است ابتدا C انجام شود، سپس A و بعد B یا هر حالت دیگری صرفنظ ...
به روز رسانی کتاب Threading in CS
آقای Albahari (نویسنده برنامه معروف LINQPad) کتاب رایگان خودشون رو در مورد برنامه نویسی چند ریسمانی در سی شارپ به روز کرده‌اند که از آدرس ذیل قابل دریافت است. این به روز رسانی‌ها شامل مباحث اضافه شده در دات نت 4 مانند tasks و غیره که از مزایای پردازش موازی بهره می‌برند نیز می‌شوند.Threading in C#, Joseph Albahari
آرگومان‌های نامگذاری شده (named arguments/parameters) در C#4
سؤال: آیا شما بدون مراجعه به مستندات شیء FormsAuthenticationTicket می‌توانید پاسخ دهید هر کدام از آرگومان‌های ذکر شده در سازنده‌ی این کلاس چه کاربرد و معنایی دارند؟ var ticket = new FormsAuthenticationTicket ( 1, principal.Identity.Name, DateTime.Now, DateTime.Now.AddMinutes(30), true, string. ...
منسوخ شده‌ها در دات نت 4
برای کاهش حجم دات نت در نگارش‌های بعدی، کلاس‌هایی که توسط تیم‌های مختلف پیشتر توسعه یافته بودند، اکنون با هم تلفیق شده و نظم بهتری پیدا کرده‌اند. برای مثال کلیه کلاس‌های مرتبط با زبان‌های اسکریپتی اکنون به فضای نام System.CodeDom.Compiler.ICodeCompiler منتقل شده‌اند و غیره. مرجع نسبتا مفصلی در مورد منسوخ شده‌ها در دات نت 4 اخیرا منتشر شده است:نوع‌های منسوخ شدهکلاس‌ها و متدهای منسوخ شدهو حتما می‌دانید که چگونه یک متد یا نوع را باید به صورت ...
SortedSet در دات نت 4
SortedSet قرار گرفته در فضای نام System.Collections.Generic دات نت 4، لیستی از اشیاء به صورت خودکار مرتب شده را ارائه می‌دهد. SortedSet نیز همانند HashSet از اعضای منحصربفردی تشکیل خواهد شد اما اینبار به شکلی مرتب شده. برای پیاده سازی آن از red-black tree data structure استفاده شده است که مهم‌ترین مزیت آن امکان افزودن و یا حذف اشیاء به آن بدون کاهش قابل توجه کارآیی برنامه است.مثال اول:using System;using System.Collections.Generic;namespace ...
دات نت 4 و کلاس Lazy
یکی از الگوهای برنامه نویسی شیء گرا، Lazy Initialization Pattern نام دارد که دات نت 4 پیاده سازی آن‌را سهولت بخشیده است.در دات نت 4 کلاس جدیدی به فضای نام System اضافه شده است به نام Lazy و هدف از آن lazy initialization است؛ من ترجمه‌اش می‌کنم وهله سازی با تاخیر یا به آن on demand construction هم گفته‌اند (زمانی که به آن نیاز هست ساخته خواهد شد).فرض کنید در برنامه‌ی خود نیاز به شیءایی دارید و ساخت این شیء بسیار پرهزینه است. نیازی نیست تا ب ...