‫۹ سال و ۶ ماه قبل، سه‌شنبه ۲۵ فروردین ۱۳۹۴، ساعت ۱۶:۳۴
چرا _syncLock به صورت static تعریف شده؟
به نظرم static بودن نه تنها غیرضروریه، بلکه حتی در مواردی (هر چند نادر) که چند نمونه‌ی جداگانه از Persons در بخش‌های مختلف برنامه همزمان در حال کار باشند، باید همه شون منتظر آزاد شدن شیء syncLock برای انجام عملیات خودشون بشن که در حقیقت نیازی نیست.
‫۹ سال و ۶ ماه قبل، سه‌شنبه ۲۵ فروردین ۱۳۹۴، ساعت ۰۰:۵۳
این روش به همه‌ی Property Setter‌های کلاس بدون در نظر گرفتن نیازهای کاربر/برنامه نویس، فراخوانی PropertyChanged رو اضافه می‌کنه. همینطور ممکنه کاربر بخواد با فراخوانی یه PropertyChanged برای یه Property، بعدش مجددا این رویداد رو برای یه Property دیگه فراخوانی کنه. به نظرم بهتره از روش‌های Attribute Base مثل این استفاده بشه.
‫۱۰ سال و ۵ ماه قبل، سه‌شنبه ۹ اردیبهشت ۱۳۹۳، ساعت ۰۲:۲۷
خدا از دهنت بشنوفه. مدت هاست منم به همین نتیجه رسیدم تازه وقتی فهمیدم بدون اون بازم میشه قابلیت تست پذیری رو داشت. کافیه یه  واسط از خود DbContext برنامه بسازی .
ولی الگوی Repository توی استفاده از کلاس‌های پایه ADO.NET مثل DbCommand و DbConnection کارایی خوبی داره.
‫۱۱ سال و ۹ ماه قبل، دوشنبه ۱۸ دی ۱۳۹۱، ساعت ۰۶:۲۵
سلام
در تابع forceWwwAndLowerCase بهتره if مربوط به www به این شکل تغییر کنه:
if (absoluteUrlToLower.Contains("http://www.") || absoluteUrlToLower.Contains("https://www."))
    return absoluteUrlToLower;
اینطوری اگه توی آدرس، Controller یا Action دارای www باشه، مشکلی پیش نمیاد. البته نکته دیگه درباره آدرس‌های دارای query string این که چرا تا قبل از ? رو به حروف کوچک تبدیل نکنیم؟ دلیل خاصی داره؟
‫۱۱ سال و ۱۱ ماه قبل، دوشنبه ۱۵ آبان ۱۳۹۱، ساعت ۲۳:۵۰
سلام.
ممنون بابت معرفی این کتابخانه‌ی مفید. جایی فرمودید که «در اینترفیس IJob در ASP.NET، به شی HttpContext دسترسی ندارید.» که درست نیست. شما در همه جای برنامه ASP.NET به کمک HttpContext.Current به HttpContext جاری دسترسی دارید. آیا استفاده از این روش مشکل خاصی داره؟
‫۱۱ سال و ۱۲ ماه قبل، شنبه ۲۲ مهر ۱۳۹۱، ساعت ۱۶:۱۱
سلام، 
با این قضیه ارجاع مستقیم به یک کنترل خاص در IView می‌تونم کنار بیام، ولی با ارجاع به اون در CPresenter نه! 
دلیل خاصی داشته؟ آخه معمولا برای رخدادگردانی، EventHandler‌ها رو در IView معرفی می‌کنن و در CPresenter استفاده می‌کنند.

البته در این مقاله ، کلا منکر استفاده از EventHandler‌ها در IView میشه و ترجیح میده فقط تابع Presenter رو از Code Behind فراخوانی کنه!
‫۱۲ سال و ۴ ماه قبل، دوشنبه ۲۹ خرداد ۱۳۹۱، ساعت ۱۸:۳۳
ممنون. تابحال HttpModule ننوشته بودم و از این موضوع خبر نداشتم. به هرحال تمرین خوبیه که همیشه رویداد‌ها رو پس از اتمام کار در این نوع موارد Unsubscribe کنیم.
‫۱۲ سال و ۴ ماه قبل، دوشنبه ۲۹ خرداد ۱۳۹۱، ساعت ۱۸:۰۸
سلام
بابت به اشتراک گذاری سورس این ماژول ممنون. اما گویا این ماژول نشت حافظه داره. شما در تابع Dispose اشاره گر به تابع رو حذف نکردید. از اونجایی که IModule اشاره گری به HttpApplication نداره بنابراین من اونو از تابع Init گرفتم
private HttpApplication _context = null;
public void Init(HttpApplication context)
{
   _context = context;
   _context.BeginRequest += CleanUpInput;
}
public void Dispose()
{
    _context.BeginRequest -= CleanUpInput;
}