مطالب
نگاشت دیتای XML به کمک AutoMapper
صورت مساله که مشخصه قراره دیتای رو از منبع داده‌ی Xml به model مورد نظرمون نگاشت کنیم چیزی شبیه کاری که متد GetEntries انجام میده و تو این پست معرفی شده...

AutoMapper به صورت داخلی و با استفاده از قرارداد‌ها نمیتونه xml رو به object تبدیل کنه ولی این کار به کمک LINQ to XML قابل انجامه.

مثالی که برای این پست انتخاب شده سوژه‌ی داغ روزهای اخیره ؟!
مدل زیر رو در نظر داشته باشید
 public class PreciousMetal
    {
        public string Name { get; set; }
        public float Price { get; set; }
        public DateTime UpdateTime { get; set; }
    }

قراره از یک وب سرویس اطلاعات مربوط به فلزات گرانبها رو دریافت و به مدل PreciousMetal نگاشت کنیم.ساختار اطلاعات دریافتی ما به شکل زیره
<pricelist currency="usd">
  <price timestamp="1349347920" per="ozt" commodity="gold">1788.70</price>
  <price timestamp="1349347860" per="ozt" commodity="palladium">665.50</price>
  <price timestamp="1349347920" per="ozt" commodity="platinum">1701.25</price>
  <price timestamp="1349347920" per="ozt" commodity="silver">34.91</price>
</pricelist>

برای نگاشت‌های معمولی کار سختی نداریم و از MapFrom استفاده میکنیم مثلا برای قیمت
Mapper.CreateMap<XElement, PreciousMetal>().ForMember(des => des.Price,
                                                                  op =>
                                                                  op.MapFrom(src => src.Value));

ولی برای زمان دریافت قیمت با توجه به متفاوت بودن زمان دریافتی مثلا در اینجا Unix time از Custom value resolvers استفاده میکنیم
public class UnixTimestampResolver : ValueResolver<XElement, DateTime>
    {
        protected override DateTime ResolveCore(XElement source)
        {
            var origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
            return origin.AddSeconds(Convert.ToDouble(source.Attribute("timestamp").Value));
        }
    }

همچنیا میخواهیم از معادل فارسی نام فلزات گرانبها استفاده کنیم
public class EnglishPMetalToFarsiResolver : ValueResolver<XElement, string>
    {
        readonly Dictionary<string, string> _pMetaldic = new Dictionary<string, string>
                                                       {
                                                           {"gold", "طلا"},
                                                           {"palladium", "پالادیوم"},
                                                           {"platinum", "پلاتین "},
                                                           {"silver", "نقره"}
                                                       };
        protected override string ResolveCore(XElement source)
        {
            string pMetalFarsi;
            return _pMetaldic.TryGetValue(source.Attribute("commodity").Value, out pMetalFarsi) ? pMetalFarsi : string.Empty;
        }
    }

نکته:از سری قبلی آشنایی با AutoMapper همیشه بین انتخاب Custom Value Formatters و Custom value resolvers مشکل داشتم مثلا همین قسمت بنظر خودم Custom Value Formatters مناسبتر میاد بعد کمی وقت گذاشتن مشخص شد گویا یه جورایی Custom Value Formatters اضافه س و اشتباه تو طراحی بوده.

و اما نحوه استفاده
static void Main(string[] args)
        {
            //تعریف نگاشت‌ها Mapper.CreateMap<XElement, PreciousMetal>().ForMember(des => des.Name,
                                                                  op => op.ResolveUsing<EnglishPMetalToFarsiResolver>())
                .ForMember(des => des.Price,
                           op =>
                           op.MapFrom(src => src.Value))

                .ForMember(des => des.UpdateTime, op => op.ResolveUsing<UnixTimestampResolver>());

            Mapper.AssertConfigurationIsValid();

            //دریافت قیمت‌ها از منبع داده
            var doc = XDocument.Load("http://www.xmlcharts.com/cache/precious-metals.xml");
            var priceData = doc.Descendants("pricelist").Take(1).Elements("price");

            //فراخوانی نگاشت
            var preciousMetals = Mapper.Map<IEnumerable<XElement>, IList<PreciousMetal>>(priceData);


            foreach (var preciousMetal in preciousMetals)
            {
                Console.WriteLine(preciousMetal.Name + " " + preciousMetal.Price + " " + preciousMetal.UpdateTime.ToShortDateString());
            }

            Console.ReadLine();

        }

اشتراک‌ها
ایجاد گزارش excel از mvc بااستفاده از EPPlus

بااستفاده از datatable فیلدهای مورد نظر برای گزارش excel را ایجاد می‌کندو میتوانیم روی قالب فایل اکسل تغییرات مورد نظر را اعمال کرده و نمودار‌های مورد نظر را ایجاد کنیم

ایجاد گزارش excel از mvc بااستفاده از EPPlus
نظرات مطالب
ارتقاء به ASP.NET Core 1.0 - قسمت 19 - بومی سازی
در این حالت بومی سازی وقتی از کتابخانه DNTBreadCrumb.Core برای نمایش bread crumb و مشخص کردن عمق صفحه‌ی جاری می‌خواهیم استفاده کنیم چطوری می‌توانیم نام کنترلرها که در عمق قرار گرفتند رو از منابع (Resources) مربوط به همان زبان نمایش بدیم؟

البته نام اصلی سایت و نام Action از طریق تکه کد زیر از منابع لود میشه و درست نمایش داده میشه 
<breadcrumb asp-homepage-title="@localizer["MyApp"]"
            asp-homepage-url="@Url.Action("Index", "Home", values: new { area = "" })"
            asp-bootstrap-version="V3"
            asp-homepage-glyphicon="glyphicon glyphicon-home"></breadcrumb>
@localizer["About"]
ولی نامی که بالای کنترلر‌ها قرار میگیره رو نمیشه از Resources لود کرد (منظورم وقتی هست که مثلا تکه کد زیر بالای نام کنترلر قرار بگیر)
[BreadCrumb(Title = "Home", UseDefaultRouteUrl = true, Order = 0)]
public class HomeController : Controller
{
}  
اشتراک‌ها
آینده‌ی Windows Phone

The latest round of layoffs in Microsoft’s Windows Phone business— 1,850 jobs will be cut, according to an announcement earlier this week—seems to signal the final death gasp of a segment of the company’s business that has long struggled. Windows phones currently make up less than one percent of smartphones sold worldwide. 

آینده‌ی Windows Phone
نظرات مطالب
امکان استفاده از کتابخانه‌های native در Blazor WASM 6x
برای اجرا شدن دستور زیر:
* خط به خط کد‌های زیر را، در cmd و پشت سر هم اجرا کنید
(نکته): باید پایتون را از قبل نصب داشته باشید (آموزش نصب پایتون)
# Get the emsdk repo
git clone https://github.com/emscripten-core/emsdk.git

# Enter that directory
cd emsdk

# Download and install the latest SDK tools.
emsdk install latest

# Make the "latest" SDK "active" for the current user. (writes .emscripten file)
emsdk activate latest

# Activate PATH and other environment variables in the current terminal
emsdk_env.bat
حالا اگر cmd شما در همچین مسیری قرار دارد:
C:\Users\{your pc name}\emsdk
میتوانید دستوری که در متن مقاله ذکر شده را اجرا کنید (البته با اندکی تغییر):
emcc C:\Users\{your pc name}\sqlite\sqlite3.c -shared -o D:\e_sqlite3.o
فایل کامپایل شده e_sqlite3.o رو در پروژه خود کپی کنید و طبق مقاله پیش بروید  و این فایل نیتو را به پروژه رفرنس بدهید.
اکنون اگر دستور dotnet bulid را در ترمینال بزنید،  احتمالا با همچین هشداری مواجه خواهید شد:
warning : @(NativeFileReference) is not empty, but the native references won't be linked in, because neither $(WasmBuildNative), nor $(RunAOTCompilation) are 'true'. NativeFileReference=Data\e_sqlite3.o [D:\project\Yourproject\Yourproject.csproj] 1 Warning(s)
در صورت مشاهده همچین هشداری و حل این مشکل (اضافه نشدن فایل نیتیو به برنامه) ابتدا 
<RunAOTCompilation>true</RunAOTCompilation>
را به قسمت بالای فایل csproj خود و در قسمت 
<PropertyGroup>
اضافه کنید و سپس دستور زیر را اجرا کنید:
dotnet workload install wasm-tools
نظرات مطالب
خلاصه اشتراک‌های روز دو شنبه 9 آبان 1390
سلام
می تونی از طریق Google plus آیتم های شر شده توسط مهندسو ببینی.
https://plus.google.com/u/0/105013528531611201860/posts
البته با عرض پوزش از جناب نصیری.
بازخوردهای دوره
صفحات مودال در بوت استرپ 3
مثال MVC آن کامل هست (پیوست شده در انتهای بحث در پوشه‌ی mvc-sample آن). شامل فایل‌های js، css و مدل و کنترلر، به همراه Viewها و layout آن که تعاریف لازم در آن هست و فایل‌های Viewهای Home که نحوه‌ی استفاده از آن ذکر شده‌اند.