البرمجة

استخدام فلاتر الإجراءات في ASP.NET Core

في تطبيقات ASP.NET Core، يمكنك استخدام حقن الاعتماد (Dependency Injection) في فلاتر الإجراءات (Action Filters) باستخدام الأساليب المناسبة. عندما تستخدم Dependency Injection في تطبيق ASP.NET Core، فإنه من المهم فهم كيفية إدارة الاعتمادات في أماكن مختلفة مثل فلاتر الإجراءات.

لحل المشكلة التي واجهتها، حيث تريد استخدام Dependency Injection داخل فلتر الإجراءات، يجب عليك استخدام خدمة IServiceProvider لحل الاعتمادات داخل الفلتر. في طريقة OnActionExecutionAsync، يمكنك الوصول إلى مزود الخدمة (Service Provider) من خلال context.HttpContext.RequestServices.

لتحقيق ذلك، يمكنك تعديل فلتر الإجراءات MyAttribute كما يلي:

csharp
using Microsoft.AspNetCore.Mvc.Filters; using System; using System.Threading.Tasks; public class MyAttribute : ActionFilterAttribute { public int Limit { get; set; } // some custom parameters passed from Action public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) { // Get the service provider from the HttpContext var serviceProvider = context.HttpContext.RequestServices; // Resolve the ICustomService from the service provider var customService = serviceProvider.GetService(typeof(ICustomService)) as ICustomService; // Ensure that the service was resolved successfully if (customService == null) { throw new InvalidOperationException("Failed to resolve ICustomService."); } // Now you can use customService in your action filter // my code // ... await next(); } }

بهذا التعديل، يمكنك الآن استخدام Dependency Injection داخل فلتر الإجراءات في تطبيق ASP.NET Core الخاص بك بكل سهولة. يتم حل اعتمادات الخدمة داخل الفلتر باستخدام مزود الخدمة المتاح في كائن HttpContext الخاص بالطلب الحالي.

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

بعد أن قمت بتعديل فلتر الإجراءات لاستخدام Dependency Injection، يمكنك الآن استخدامه بسهولة في تطبيق ASP.NET Core الخاص بك. يُظهر الكود السابق كيفية الوصول إلى مزود الخدمة وحل الاعتمادات داخل فلتر الإجراءات.

الآن، دعنا ننظر إلى كيفية استخدام فلتر الإجراءات المعدل في تطبيق ASP.NET Core الخاص بك. لاستخدام الفلتر، يمكنك ببساطة تطبيقه على إجراء (Action) في العنوان الخاص بك كما يلي:

csharp
[MyAttribute(Limit = 10)] public IActionResult MyAction() { // Your action logic here }

بهذا التطبيق، يتم تطبيق فلتر الإجراءات MyAttribute على الإجراء MyAction. يمكنك تعديل قيمة Limit كما تشاء وستتم معالجتها بواسطة فلتر الإجراءات أثناء تنفيذ الإجراء.

يُظهر النمط الذي تم تطبيقه في الكود السابق كيف يمكنك الآن استخدام Dependency Injection في فلاتر الإجراءات في ASP.NET Core. هذا يتيح لك إمكانية استخدام خدمات واجهات الخدمات الخاصة بك بسهولة داخل فلاتر الإجراءات، مما يسهل عليك إدارة المنطق المشترك والتكراري بين الإجراءات في تطبيقك.

باستخدام Dependency Injection في فلاتر الإجراءات، يمكنك تحسين إعادة استخدام الكود وتبسيط تطوير التطبيقات الخاصة بك في ASP.NET Core، مما يجعلها أكثر كفاءة وصيانة.

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