PDA

View Full Version : مقاله: مثالی از قدرت Predefined Delegates



Behrouz_Rad
پنج شنبه 16 مهر 1388, 07:57 صبح
در NET.، سه نوع Delegate از پیش تعریف شده وجود داره. Action، Func و Predicate
مسلماً نیاز پیدا کرده اید که مقدار Query String رو در برنامه بازیابی کنید. متدی که نوشتم به شکل ذیل هست:




public static string GetQueryStringValue(string name, bool checkForNumber, Action OnFail)
{
if (String.IsNullOrEmpty(HttpContext.Current.Request. QueryString[name]))
{
OnFail();
return string.Empty;
}
else if (checkForNumber == true)
{
int result;
bool isInteger = Int32.TryParse(HttpContext.Current.Request.QuerySt ring[name], out result);
if (isInteger)
{
return result.ToString();
}
else
{
OnFail();
}
}
else if (checkForNumber == false)
{
return HttpContext.Current.Request.QueryString[name];
}

return string.Empty;
}


در متد فوق میشه مشخص کرد که آیا بررسی عدد بودن مقدار Query String هم صورت بپذیره یا خیر. اما نکته ی جالب اینجاست که در پارامتر سوم، میشه عملیاتی رو مشخص کرد که در صورت نبود Query String یا عددی نبودن مقدار اون، انجام بگیره. این مورد با استفاده از دیلیگیت Action مشخص شده.
به عنوان مثال، به شکل ذیل می توان تعیین کرد که در صورت ناموفق بودن عملیات بازیابی Query String، کاربر به صفحه ی ErrorPage.aspx هدایت بشه:




string Id = GetQueryStringValue("myQueryStringName", true, () => Response.Redirect("ErrorPage.aspx?p=InvalidArgument"));


ملاحظه می کنید که در پارامتر سوم از یک عبارت Lambda استفاده شده.
این طرز پیاده سازی، انعطاف پذیری فوق العاده ای به کدهای برنامه نویس میده.

موفق باشید.:لبخندساده: