‫۱۱ سال و ۲ ماه قبل، سه‌شنبه ۸ مرداد ۱۳۹۲، ساعت ۱۳:۳۳
من میخواهم که مدل بایندر را برای یک پراپرتی از مدلم تنظیم کنم. یعنی پراپرتی از جنس byte[] داریم که میخواهم توسط FileModelBinder بایند شود. FileModelBinder فایلهای آپلود شده به سرور را میخواند و در پراپرتی میریزد. من نمیخواهم همه‌ی پراپرتی‌های از جنس byte[] را به این بایندر واگذار کنم فقط میخواهم در مدلهای معینی در پراپرتی‌های مورد نظرم این بایندر اعمال شود. همچنین من نمیخواهم که از بایندر در پارامترهای ورودی action method بر روی یک پارامتر byte[] استفاده کنم.
آیا اطلاق یک بایندر به یک پراپرتی از یک مدل برای یک تایپ مشخص مانند byte[] قابل انجام هست؟
‫۱۱ سال و ۲ ماه قبل، سه‌شنبه ۸ مرداد ۱۳۹۲، ساعت ۱۳:۲۷
خب، برای خاطر خوانندگانی که دچار اشتباه میشوند بهتر نمیدونید که مقاله رو ویرایش کنید و این مطلب رو اصلاح کنید؟
‫۱۱ سال و ۵ ماه قبل، جمعه ۱۳ اردیبهشت ۱۳۹۲، ساعت ۰۹:۰۳
من کلاً نمیفهمم. در ضمن من سه تا سوال مطرح کردم(پاراگراف آخر کامنتم) که من باز هم نمیفهمم این جواب کدومشونه.
‫۱۱ سال و ۵ ماه قبل، پنجشنبه ۱۲ اردیبهشت ۱۳۹۲، ساعت ۱۹:۳۶
موضوع این مقاله درباره Enum است و نه ارسال داده‌های کلی به کلاینت. پس آیا فکر میکنید در اینجا چیزی برای اسکیپ شدن وجود داره؟
‫۱۱ سال و ۵ ماه قبل، پنجشنبه ۱۲ اردیبهشت ۱۳۹۲، ساعت ۱۸:۱۴
به نظر من موضوع رو خیلی پیچیده کردی. برای تولید json لازم نیست که از کتابخانه خاصی استفاده کنی با همون استرینگ منیوپولیشن ساده هم میشه این کار را کرد:
public static class EnumHelper
{
    public static Dictionary<string,EnumValueType> ToDictionary<EnumType,EnumValueType>()
    {
        return Enum.GetValues(typeof(EnumType)).Cast<EnumValueType>().ToDictionary(i=>Enum.GetName(typeof(EnumType),i),i=>i);
    }
    public static string ToJson<EnumType>()
    {        
        return "{" + string.Join(",", ToDictionary<EnumType,int>().Select(i=>string.Format(@"{{""{0}"":{1}}}",i.Key,i.Value)).ToArray())+ "}" ;                           
    }
}
کلاس ساده بالا به سادگی json مورد نیاز را تولید میکند.
در ضمن برای اینجکت کردنش به صفحه هم لازم نیست که از فیلد مخفی استفاده کنی. به جاش json را مستقیم در محل مورد نظر رندر کن:
در Asp.Net MVC Razor:
var x = @EnumHelper.ToJson<MyEnum()
در Asp.Net Web Forms :
var x = <%=EnumHelper.ToJson<MyEnum>()%>
همچنین همانطور که در مثالهای فوق نشان داده ام حتی لازم نیست از JSON.Parse استفاده کنی.
البته من اینها را بر اساس ذهنیاتم خیلی سریع نوشتم و کدهای فوق را تست نکرده ام که ببینم درست کار میکنند یا نه. اما منظورم این بود که بپرسم چرا از فیلد مخفی استفاده کردی و چرا از JSON.Parse استفاده کردی و اینکه چرا از JavaScriptSerializer استفاده کردی؟
‫۱۱ سال و ۵ ماه قبل، سه‌شنبه ۱۰ اردیبهشت ۱۳۹۲، ساعت ۰۸:۵۲
بسیار خوب.
فقط من تو مقاله شما دلیلی برای اینکه چرا زمان و تاریخ را میخواهی به این صورت ذخیره کنی متوجه نشدم؟ چرا به همان شکل استانداردش ذخیره نکنیم؟
دیگر اینکه نوع داده جدید به چه شکل در دیتابیس ذخیره میشود. Sql Server از کجا میداند که باید چگونه لیترالها را پارس کند(چگونه متود Parse برگزیده میشود)؟ عملگرهای مقایسه چگونه کار خواهند کرد؟
‫۱۱ سال و ۶ ماه قبل، جمعه ۳۰ فروردین ۱۳۹۲، ساعت ۱۱:۵۳
من نویسنده خوبی نیستم و شاید بهتر باشه که در اینباره نظر ندهم. به هر روی چند نکته به نظرم آمد باشد که مورد توجه شما واقع شود:
  • مقدمه را هنوز کامل نکردی. مقدمه خواننده را در جای پرتی از ماجرا رها میکند. اگر چهار خط آخر مقدمه را دوباره بخوانید متوجه میشوید که اگر تمام کاری که برای داشتن آزمون واحد باید انجام شود همین سه مورد باشد دیگر هرگز کسی به Fakes نیاز پیدا نمیکند، پس باید در ادامه میگفتید که این حالت مطلوب است ولی همیشه عملی نیست.
  • شروع و پایان مثالها مشخص نبود. مثالها بدون عنوان بودند. در شروع مثال باید مقدمه ای از مثال را مطرح میکردی و بعد مراحل مثال را توضیح میدادی.
  • در مثال اول باید بر بیشتر بر روی DataAccessLayer تاکید میکردی و صریح مشخص میکردی که عدم توانایی برنامه نویس در تغییر این کلاس و یا معماری سیستم گزینه IoC را کنار میگذارد و به این ترتیب مثال شما سودمندی Shim را بهتر نشان میداد.
  • در مثال دوم، کد CardToStub را ارائه نکردی، اگر،طبق آنچه انتظار میرود، وابستگی که در CardToStub وجود دارد به اینترفیس ICartSaver است در این صورت اساساً مثال شما هیچ دلیل و انگیزشی برای Stub فراهم نمیکند. باید باز هم ذهنیت خواننده را شکل میدادی و او را متوجه این موضوع میکردی که در پیاده سازی دیگری که برنامه نویس قدرت اعمال تغییر در آن ندارد وابستگی سخت وجود دارد و به این دلیل Stub میتواند مفید واقع شود.
البته این رو به حساب اینکه من یک خواننده بسیار مبتدی هستم گفتم شاید مقاله برای دیگران بیشتر از من قابل فهم است. ولی در کل مقاله خوبی بود و برای من کابردی بود.
‫۱۱ سال و ۷ ماه قبل، سه‌شنبه ۲۹ اسفند ۱۳۹۱، ساعت ۱۱:۵۱
فکر کنم بشود در محیط LAN با استفاده از آدرسهای شبکه محلی repository‌ها را بین کاربران به اشتراک گذاشت. مثلاً من repository خودم را share کنم و همکارم هم repository خودش را. بعد هر کدام repository اون یکی را به remote‌ها اضافه کند.
همچنین میتوان یک repository از نوع bare در سرور شبکه LAN تعریف کرد و همه به آن به عنوان repository مادر متصل شوند.
البته من خیلی مطمئن نیستم. منتظرم تا ببینم نظر حسام در اینباره چیه؟
‫۱۱ سال و ۷ ماه قبل، چهارشنبه ۱۶ اسفند ۱۳۹۱، ساعت ۰۹:۳۲
مطلب خوبی بود وحید جان. ممنونم.
البته من بعد از اینکه مطلب شما رو خوندم و متوجه شدم که دو نوع فایل pfx و snk هست که با اون میشه sign کرد اندکی تو اینترنت گشتم و  متوجه یک نکته شدم که گفتم بد نیست اینجا مطرح کنم.
هر چند مطلب شما درباره تبدیل فایل pfx به snk است اما متنی که نوشتید این موضوع را القا میکند که نمیشود به سادگی این فایل رو ساخت.
به هر روی، میتوان فایل snk را از طریق فایل زبانه signing در خواص پروژه ساخت. برای این کار کافیست که گزینه Protect my key file with a password  را آنتیک کرد و در این حالت به جای اینکه فایل pfx ساخته شود فایل snk ساخته میشود.
مطلب دیگر اینکه من پروژه‌های متن باز دیگری را دیده ام که الان حضور ذهن ندارم بگم(احتمالاً یکیشون RavenDB بود) که از طریق خواص پروژه ویژوال استودیو کار signing را انجام نمیدهند یعنی در آنجا گزینه sign کردن را انتخاب نکرده اند. چون فایل snk را اگر منتشر کنیم همه میتونند با اون اسمبلی‌ها را sign کنند و معنای strong name بودن اسمبلی به طور کلی میره زیر سوال. در عوض از یک customized build استفاده میکنند که فقط توسط خودشون(مالکان پروژه) قابل فراخوانی است و توسط اون اسمبلی‌های release را میسازند. البته در اینباره باید بیشتر بررسی کنم و شاید دقیقاً ماجرا 100 درصد به این شکل که گفتم نیست.