بدون شک علم برنامه نویسی در پیشرفت تکنولوژی دنیا، نقش بسیار کلیدی را ایفا کرده است بطوریکه حتی تصور یک روز بدون گوگل هم بسیار نگران کنندهاست. امروزه همهی صنعتهای دنیا، از اینترنت و سایتهایی که توسط برنامه نویسان راه اندازی میشوند، در توسعه کسب و کارهای خود استفاده میکنند. اصولا برنامه نویسی باید در استفاده از ساختههای خود برای پیشرفت و توسعهی علم خود پیشرو باشد. بدیهی ست استفادهی درست از تجربیات دیگران باعث صرفه جویی در زمان و هز ...
__arglist __reftype __makeref __refvalue کلمات کلیدی در حالیکه، ویرایشگر Visual Studio این کلمات را به صورت رنگی و جزء کلمات کلیدی نمایش میدهد، ولی به دلیل عدم وجود مستندات برای این کلمات کلیدی، برای استفاده از آنها باید مراقب باشید؛ چرا که ممکن است به اندازه کافی تست نشده باشند. شما میتوانید با استفاده از کلمه کلیدی makeref__ یک TypeReference را از یک متغیر، ایجاد کنید. با استفاده از کلمه کلیدی reftype__ میتوانید نوع ...
Curry and Partial methods Curry – در ریاضیات و علوم کامپیوتر، currying روشی است برای ترجمه تابعی که آرگومانهای متعددی میگیرد و به صورت ارزیابی دنبالهایاست از توابع که هر کدام یک آرگومان دارند. برای پیاده سازی آن در #C، از extension methods استفاده میکنیم. public static class CurryMethodExtensions
{
public static Func< A, Func< B, Func< C, R > > > Curry< A, B, C, R >( this Func< A, ...
ObsoleteAttribute ObsoleteAttribute بر روی تمامی عناصر یک برنامه بجز assemblies, modules، پارامترها و مقادیر بازگشتی قابل استفاده است. علامتگذاری یک عنصر به عنوان منسوخ شده، به کاربر استفاده کننده اطلاع میدهد که این عنصر در نسخههای آینده حذف خواهد شد. با استفاده از پروپرتی Message آن پیامی را به کاربر استفاده کننده نشان خواهد داد و توصیه میشود در این پیام یک راه حل نیز ارائه شود. پروپرتی IsError در صورتی که مقدار آن به true ...
استفاده از Tupleها جهت مقدار برگشتی یک متد
اکثر مواقع برنامه نویسان برای بازگشت چند مقدار توسط یک متد، به روشهایی مثل تعریف کلاسهای POCO یا پارامترهایی از نوع out متوسل میشوند. به وسیلهی Tupleها میتوان چند مقدار مختلف را به عنوان خروجی متد بازگشت داد: private Tuple<string, string, int> GetPersonInfo()
{
return new Tuple<string, string, int>("Steve", "Jobs", 56);
}
همچنین از Tupleه ...
آیا تا به حال مجبور به نوشتن کدی شبیه قطعه کد زیر شده اید؟ var store = GetStore();
string postCode = null;
if (store != null && store.Address != null && store.Address.PostCode != null)
postCode = store.Address.PostCode.ToString(); بله! من مطمئن هستم برای شما هم پیش آمده است. هدف بازیابی و یا محاسبه یک مقدار است، اما برای انجام این کار میبایست به چندین شیء میانی دسترسی پیدا کنیم که البته ممکن ا ...
در قسمت قبلی مدیریت همزمانی در بروز رسانیها را بررسی کردیم. در این قسمت مرتب سازی (serialization) پراکسیها در سرویسهای WCF را بررسی خواهیم کرد. مرتب سازی پراکسیها در سرویسهای WCF فرض کنید یک پراکسی دینامیک (dynamic proxy) از یک کوئری دریافت کرده اید. حال میخواهید این پراکسی را در قالب یک آبجکت CLR سریال کنید. هنگامی که آبجکتهای موجودیت را بصورت POCO-based پیاده سازی میکنید، EF بصورت خودکار یک آبجکت دینامیک مشتق شده را در ...
در قسمت قبل رویکردهای مختلف برای حذف موجودیتهای منفصل را بررسی کردیم. در این قسمت مدیریت همزمانی یا Concurrency را بررسی خواهیم کرد.
فرض کنید میخواهیم مطمئن شویم که موجودیتی که توسط یک کلاینت WCF تغییر کرده است، تنها در صورتی بروز رسانی شود که شناسه (token) همزمانی آن تغییر نکرده باشد. به بیان دیگر شناسه ای که هنگام دریافت موجودیت بدست میآید، هنگام بروز رسانی باید مقداری یکسان داشته باشد.
مدل زیر را در ...
در قسمت قبل پیاده سازی change-tracking در سمت کلاینت توسط Web API را بررسی کردیم. در این قسمت نگاهی به حذف موجودیتهای منفصل یا disconnected خواهیم داشت. حذف موجودیتهای منفصل فرض کنید موجودیتی را از یک سرویس WCF دریافت کرده اید و میخواهید آن را برای حذف علامت گذاری کنید. مدل زیر را در نظر بگیرید. همانطور که میبینید مدل ما صورت حسابها و پرداختهای متناظر را ارائه میکند. در اپلیکیشن جاری یک سرویس WCF پیاده سازی کرده ا ...
در قسمت قبل تشخیص تغییرات توسط Web API را بررسی کردیم. در این قسمت نگاهی به پیاده سازی Change-tracking در سمت کلاینت خواهیم داشت. ردیابی تغییرات در سمت کلاینت توسط Web API فرض کنید میخواهیم از سرویسهای REST-based برای انجام عملیات CRUD روی یک Object graph استفاده کنیم. همچنین میخواهیم رویکردی در سمت کلاینت برای بروز رسانی کلاس موجودیتها پیاده سازی کنیم که قابل استفاده مجدد (reusable) باشد. علاوه بر این دسترسی دادهها توسط مد ...