Text Processing
Using Regular Expressions in .NET
Character Sets
Quantifiers
Anchors
Alternation
Searching Summary
Regex Tester Program II
Regex Objects
Groups
Look-Arounds
Replacing Text with Regex
Cleaning Data with Regular Expressions
Unicode
Optimizing Your Regex
Regex Errors
Other Regex Options
Regex Summary
Resources
نظرات مطالب
مهارتهای تزریق وابستگیها در برنامههای NET Core. - قسمت اول - تزریق وابستگیها در برنامههای کنسول
یک نکتهی تکمیلی: الگویی thread-safe برای ساخت Service Provider در برنامههای کنسول
namespace Test { public static class ConfigureServices { private static readonly Lazy<IServiceProvider> _serviceProviderBuilder = new Lazy<IServiceProvider>(getServiceProvider, LazyThreadSafetyMode.ExecutionAndPublication); /// <summary> /// A lazy loaded thread-safe singleton /// </summary> public static IServiceProvider Instance { get; } = _serviceProviderBuilder.Value; private static IServiceProvider getServiceProvider() { var services = new ServiceCollection(); // TODO: add other services here ... services.AddSingleton .... return services.BuildServiceProvider(); } } }
کلاس PersianDateTime سازندههای متعددی دارد. از سازندهای که نوع DateTime را مستقیما دریافت میکند، استفاده کنید:
یعنی با وجود این سازنده، نیازی به ToString و سپس DateTime.Parse آن نیست:
new PersianDateTime(t.ResponseDate.Value).ToString(PersianDateTimeFormat.DateShortTime)
/// <summary> /// Initializes a new instance of the PersianDateTime class to a specified dateTime. /// </summary> /// <param name="dateTime">A date and time in the Gregorian calendar.</param> public PersianDateTime(DateTime dateTime) { _dateTime = dateTime; }
نظرات مطالب
EF Code First #12
- خیر. ASP.NET MVC یک فریم ورک AOP سر خود است. این مسایل رو باید با فیلترها پیاده سازی کنید.
- StructureMap وهله جدیدی را ایجاد میکند، اما ... کار استفاده (یا عدم استفاده) از آن به عهده ASP.NET MVC است و StructureMap دخالتی در آن ندارد.
- این مورد (عدم فراخوانی ExecuteCore تحریف شده) تغییری است که در MVC4 اعمال شده
باید DisableAsyncSupport را اضافه کنید.
- StructureMap وهله جدیدی را ایجاد میکند، اما ... کار استفاده (یا عدم استفاده) از آن به عهده ASP.NET MVC است و StructureMap دخالتی در آن ندارد.
- این مورد (عدم فراخوانی ExecuteCore تحریف شده) تغییری است که در MVC4 اعمال شده
public class MyBaseController : Controller { /// <summary> /// from http://forums.asp.net/t/1776480.aspx/1?ExecuteCore+in+base+class+not+fired+in+MVC+4+beta /// </summary> protected override bool DisableAsyncSupport { get { return true; } } protected override void ExecuteCore() { base.ExecuteCore(); } }
مطلبی را در سایت رادیکال 2 در مورد نمایش تعداد خواننده یک فید دیدم که پیاده سازی آن با سی شارپ و xml serialization به صورت زیر است:
using System;
using System.Xml;
using System.Xml.Serialization;
namespace Test
{
/// <summary>
/// کلاسی جهت نمایش تعداد خواننده فید وبلاگ شما
/// <example>CFeedBurner data = new CFeedBurner { FeedID = "fhphjt61bueu08k93ehujpu234" };
/// MessageBox.Show(data.Circulation().ToString());</example>
/// </summary>
class CFeedBurner
{
/// <summary>
/// آی دی فید شما زمانیکه به فید برنر لاگین کردهاید در تایتل صفحه مربوطه
/// </summary>
public string FeedID { get; set; }
/// <summary>
/// نگاشت فید به یک کلاس
/// </summary>
/// <returns>کلاس متناظر با فید</returns>
/// <exception cref="Exception">لطفا شماره شناسایی فید را وارد کنید</exception>
rsp deserializeFromXML()
{
if (FeedID == null)
throw new Exception("لطفا شماره شناسایی فید را وارد کنید");
XmlSerializer deserializer =
new XmlSerializer(typeof(rsp));
using (XmlReader reader = XmlReader.Create(
string.Format("https://feedburner.google.com/api/awareness/1.0/GetFeedData?id={0}", FeedID)))
{
return (rsp)deserializer.Deserialize(reader);
}
}
/// <summary>
/// دریافت تعداد خواننده فید
/// </summary>
/// <returns>آمار فید</returns>
/// <exception cref="Exception">اطلاعات فید شما قابل دریافت نیست</exception>
public int Circulation()
{
rsp data = deserializeFromXML();
if (data == null || data.feed == null || data.feed.Length == 0)
throw new Exception("اطلاعات فید شما قابل دریافت نیست");
if (data.feed[0].entry == null || data.feed[0].entry.Length == 0)
throw new Exception("اطلاعات فید شما قابل پردازش نیست");
return int.Parse(data.feed[0].entry[0].circulation);
}
}
}
xsd.exe GetFeedData.xml
xsd.exe GetFeedData.xsd /c
پاسخ به بازخوردهای پروژهها
چند متد الحاقی پیشنهادی
متد پیش فرض دات نت برای بررسی مقادیر String مناسب است. شاید با ترکیب دو متد IsNullOrWhiteSpace و IsNullOrEmpty بتوان متد بهتری ساخت. متد پیشنهادی من به صورت زیر است:
/// <summary> /// It returns true if string is null or empty or just a white space otherwise it returns false. /// </summary> /// <param name="input">Input String</param> /// <returns>bool</returns> public static bool IsEmpty(this string input) { return string.IsNullOrEmpty(input) || string.IsNullOrWhiteSpace(input); }
کلمه هر ثانیه اشتباه من بود و هر دقیقه صحیح هست. این وظیفه برای یک web API نوشته شده و آدرس root خاصی نداره و مطابق ذیل هست: منتها وقتی آدرس root درخواست میشه در browser تبدیل به چنین آدرسی میشه به خاطر swagger :
authorize خاصی هم نداره.
" {context.Request.Scheme}://{context.Request.Host.Value}"
https://domain.com/index.html
نظرات مطالب
EF Code First #8
چقدر خوب که این مطلب رو تکمیل کردید (هرچند View متناظر در اینجا هم باید ذکر میشد).
همچنین چقدر خوب میشد زمانیکه سؤال اصلی رو اینجا پرسیدید، موارد فوق رو هم ذکر میکردید. چون افراد نمیتونند از راه دور کار شما را مشاهده یا دیباگ کنند یا دقیقا بدانند که چه کدی را نوشتهاید که این خطا را داده. به همین جهت سعی میکنند حدس بزنند که در مرحله آخر و پس از نگاشتها، چکار کردهاید که خطای فوق حاصل شده.
مطلب خوبی در این زمینه: «نحوه صحیح گزارش دادن یک باگ»
همچنین چقدر خوب میشد زمانیکه سؤال اصلی رو اینجا پرسیدید، موارد فوق رو هم ذکر میکردید. چون افراد نمیتونند از راه دور کار شما را مشاهده یا دیباگ کنند یا دقیقا بدانند که چه کدی را نوشتهاید که این خطا را داده. به همین جهت سعی میکنند حدس بزنند که در مرحله آخر و پس از نگاشتها، چکار کردهاید که خطای فوق حاصل شده.
مطلب خوبی در این زمینه: «نحوه صحیح گزارش دادن یک باگ»
نظرات مطالب
آشنایی با Refactoring - قسمت 9
سلام ،
اگر فرض کنیم RoleRepository مطلب جاری پیاده سازی منطق تجاری قسمت کاربران در یک پروژهی ASP.NET MVC میباشد، این استثناءها کجا باید مدیریت شوند ؟ در بدنهی Controller ؟
به عبارتی دیگر بهتر است نوع بازگشتی لایهی سرویس یک شیء باشد که موفقیت / عدم موفقیت عملیات به همراه پیغام خطا را بازگرداند یا اینکه در صورت صحیح نبودن روند مثلا تکراری بودن نام کاربری Exception ارسال شود و استفاده کننده از Service مثل Controller مسئولیت Handle کردن استثناءها را بر عهده بگیرد ؟
به عبارتی دیگر بهتر است نوع بازگشتی لایهی سرویس یک شیء باشد که موفقیت / عدم موفقیت عملیات به همراه پیغام خطا را بازگرداند یا اینکه در صورت صحیح نبودن روند مثلا تکراری بودن نام کاربری Exception ارسال شود و استفاده کننده از Service مثل Controller مسئولیت Handle کردن استثناءها را بر عهده بگیرد ؟