MapperConfiguration

  • تحديث AutoMapper: الانتقال من API الثابتة وكيفية الاستفادة من IMapper

    عند الانتقال من واجهة برمجة التطبيق (API) الثابتة في AutoMapper، يتطلب الأمر تعديل بعض الجزيئيات في الشيفرة البرمجية الخاصة بك. يُعد هذا التحول جزءًا حيويًا من تحديث النظام، ورغم أنه قد يتسبب في بعض المشاكل في البداية، إلا أنه يفتح أفقًا أوسع للتكامل والتحكم الأفضل في الخرائط (Mappings) في التطبيقات.

    سابقًا، كنت تستخدم الواجهة الثابتة باستخدام الطريقة Mapper.CreateMap()، ولكنها أصبحت قديمة ومهجورة. الخطوة الأولى للتحول هي استخدام MapperConfiguration وتخزينها بشكل ثابت عند بداية التطبيق. يمكنك فعل ذلك كالتالي:

    csharp
    // ===> Startup.cs public class Startup { public Startup(IHostingEnvironment env) { // ... var mapperConfig = new MapperConfiguration(cfg => { cfg.AddProfile(); cfg.AddProfile(); cfg.AddProfile(); }); IMapper mapper = mapperConfig.CreateMapper(); // يمكنك تخزين المتغير 'mapper' بشكل ثابت لاستخدامه في جميع أنحاء التطبيق } }

    في هذا المثال، تم إنشاء MapperConfiguration وتكوينها مع الـ Profile الخاصة بك. ثم تم إنشاء IMapper باستخدام CreateMapper().

    الآن، بدلاً من استخدام Mapper.CreateMap() في ملف AbcMappingProfile.cs، يمكنك استخدام CreateMap() مباشرة على الـ IMapper:

    csharp
    // ===> AbcMappingProfile.cs public class AbcMappingProfile : Profile { protected override void Configure() { CreateMap(); CreateMap(); // ... } }

    الخطأ الذي يظهر بسبب الـ ‘obsolete’ يشير إلى أنه يجب الابتعاد عن استخدام الواجهة الثابتة. الآن، يمكنك استخدام CreateMap() بشكل مباشر دون الحاجة إلى Mapper.CreateMap().

    باختصار، يتعين عليك إنشاء تكوين للـ AutoMapper في بداية التطبيق واستخدامه عبر IMapper لتعريف الخرائط بشكل دينامي وفعال.

    المزيد من المعلومات

    بالتأكيد، دعنا نستكمل استعراض التحول من واجهة برمجة التطبيق (API) الثابتة في AutoMapper إلى النهج الدينامي باستخدام MapperConfiguration و IMapper.

    عندما تقوم بتحديث AutoMapper، يتوجب عليك أيضًا إجراء بعض التغييرات في كيفية استخدام IMapper لعمليات الخرائط. سأشرح كيفية استخدام IMapper في بعض السيناريوهات الشائعة.

    1. خريطة الكائنات:

    في حالة رغبتك في تنفيذ خريطة بين كائنين، يمكنك استخدام IMapper كما يلي:

    csharp
    // في أي مكان داخل التطبيق بعد إعداد التكوين var sourceObject = new AbcEditViewModel(); var destinationObject = mapper.Map(sourceObject);

    2. تحديث الكائن الهدف:

    إذا كنت بحاجة إلى تحديث كائن هدف بناءً على بيانات من كائن آخر، يمكنك استخدام Map كما يلي:

    csharp
    // تحديث الكائن الهدف باستخدام بيانات من الكائن الأصل mapper.Map(sourceObject, destinationObject);

    3. الخيارات الإضافية:

    يمكنك أيضًا استخدام العديد من الخيارات الإضافية أثناء تنفيذ عمليات الخرائط، مثل تخصيص المخططات (Profiles) وتجاوز السلوك الافتراضي للتحويل.

    csharp
    // تحديد خرائط مخصصة باستخدام ملف تكوين آخر mapper.ConfigurationProvider.AssertConfigurationIsValid(); // تحديد سلوك تحويل مخصص mapper.Map(sourceObject, destinationObject, opt => opt.AfterMap((src, dest) => dest.SomeProperty = "Custom Value"));

    بهذه الطريقة، يمكنك استفادة الكثير من ميزات AutoMapper الجديدة والتحكم الكامل في عمليات الخرائط دون الاعتماد على واجهة برمجة التطبيق الثابتة. تذكر دائمًا تحديث ملفات التكوين والملفات الفرعية لتتناسب مع التغييرات وضمان استمرار عمل التطبيق بسلاسة.

  • تحديثات Automapper وAutofac: إدارة الخرائط بكفاءة في .Net

    في الآونة الأخيرة، وجدت نفسك تواجه تحديات في تحديث تكوين Automapper وAutofac في تطبيق .Net الخاص بك. مع إصدار Automapper الأحدث (4.2)، تغيرت واجهة البرمجة التطبيقية وبالتالي واجهت صعوبة في ترجمة التكوين السابق إلى الواجهة الجديدة. تعرض هذه التغييرات تحدٍ إضافي على النصوص البرمجية التي تعتمد على Autofac لإدارة حقن الإعتماد.

    سابقًا، كنت تقوم بتكوين Automapper وAutofac باستخدام مثل هذا الكود:

    csharp
    builder.RegisterAssemblyTypes(typeof(OneOfMyMappingProfiles).Assembly) .Where(t => t.IsSubclassOf(typeof(Profile))) .As(); builder.Register(ctx => new ConfigurationStore(new TypeMapFactory(), MapperRegistry.Mappers)) .AsImplementedInterfaces() .SingleInstance() .OnActivating(x => { foreach (var profile in x.Context.Resolve>()) { x.Instance.AddProfile(profile); } }); builder.RegisterType() .As().SingleInstance();

    لكن مع التحديث الأخير ل Automapper، تغيرت الطريقة التي يتم بها تكوين المابينج. وفقًا للتوثيق الجديد، يمكنك تكوين Automapper مع Autofac كما يلي:

    csharp
    var profiles = from t in typeof(AutoMapperRegistry).Assembly.GetTypes() where typeof(Profile).IsAssignableFrom(t) select (Profile)Activator.CreateInstance(t); var config = new MapperConfiguration(cfg => { foreach (var profile in profiles) { cfg.AddProfile(profile); } }); builder.RegisterInstance(config).As(); builder.Register(ctx => config.CreateMapper(ctx.Resolve)).As();

    يتم هنا استخدام builder.RegisterInstance(config).As() لتسجيل MapperConfiguration في حاوية Autofac، ومن ثم builder.Register(ctx => config.CreateMapper(ctx.Resolve)).As() يتم استخدامها لتكوين حقن الاعتماد ل IMapper.

    هذا التغيير يعكس التحديات التي قد تواجهها عند تحديث الحزم البرمجية، ومع تفهمك للتغييرات اللازمة، يمكنك الآن مواصلة استخدام Automapper وAutofac بنجاح في تطبيق .Net الخاص بك.

    المزيد من المعلومات

    تجلب هذه التحديثات في Automapper وAutofac تحسينات وتغييرات في الطريقة التي يتم بها تكوين وإدارة الخرائط (Mappings) وحقن الاعتماد. من خلال فهم القطع المختلفة في التعديلات، يمكن أن تسهم في تعزيز كفاءة التكامل بين هاتين الحزمتين القوية.

    إحدى النقاط الرئيسية التي يجب أخذها في اعتبارك هي استخدام MapperConfiguration لتحديد وتكوين الخرائط. يمكنك الآن تكوين الخرائط وتكوين Automapper بشكل أكثر وضوحًا وفاعلية باستخدام MapperConfiguration. يُظهر الشيفرة البرمجية الجديدة كيف يمكن إنشاء MapperConfiguration واستخدامها في تسجيل Autofac.

    كما يجدر بك مراعاة التحول الشامل في الطريقة التي يتم بها حقن الاعتماد باستخدام Autofac. في المثال الجديد، تتمثل الخطوة الرئيسية في استخدام builder.RegisterInstance(config).As() لتسجيل MapperConfiguration كمفتاح للاستفادة منها في بناء IMapper. هذا يعكس التوجه نحو توفير مزيد من المرونة والوضوح في عمليات تكوين Automapper.

    التحولات في واجهة برمجة التطبيق (API) تعكس استمرار الابتكار والتطور في عالم البرمجة، وتتيح للمطورين تحسين تجاربهم وتبسيط عملياتهم. في هذا السياق، تحديثات Automapper تسهم في تبسيط عمليات التكوين وتوفير ميزات أكثر قوة ومرونة.

    بمواكبتك لآخر التحديثات والتغييرات، يمكنك الاستمرار في الاستفادة من فعالية Automapper وAutofac في تطبيق .Net الخاص بك، مما يعزز القدرة على إدارة وتكوين الخرائط بشكل أفضل وفعال.

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر