نينجيكت:مثيل اعتراضي واحد لكل مثيل فئة واحدة يتم اعتراضه?
-
27-10-2019 - |
سؤال
أواجه حاليا مشكلة ، في محاولة لتوصيل مثيل اعتراض واحد بالضبط لكل مثيل واحد من الفئة التي يتم اعتراضها.
أنا خلق والمشورة في إنتروتوريجيستراتيونستراتيجي ووضع رد الاتصال لحل اعتراضية من النواة (لديه منشئ حقن).يرجى ملاحظة أنه يمكنني فقط إنشاء مثيل اعتراضية في رد الاتصال لأن اعتراضية ليس لديها إشارة إلى النواة نفسها.
IAdvice advice = this.AdviceFactory.Create(methodInfo);
advice.Callback = ((context) => context.Kernel.Get<MyInterceptor>());
this.AdviceRegistry.Register(advice);
أنا الحصول على مثيل اعتراضية في الأسلوب.
هل هناك أي طريقة لإنشاء مثيل اعتراض واحد لكل مثيل نوع يتم اعتراضه?
كنت أفكر في النطاق المسمى ، لكن النوع المعترض والمعترض لا يشيران إلى بعضهما البعض.
المحلول
هذا غير ممكن حيث يتم إنشاء معترض واحد لكل طريقة لجميع حالات الربط.
ولكن ما يمكنك فعله ليس تنفيذ رمز الاعتراض مباشرة في المعترض ولكن للحصول على مثيل لفئة تتعامل مع الاعتراض. Genacodicetagpre
نصائح أخرى
هل حاولت استخدام واجهة برمجة التطبيقات بطلاقة لتكوين اعتراضك?
Bind<IInterceptor>().To<MyInterceptor>().InSingletonScope();
Bind<IService>().To<Service>().Intercept().With<IInterceptor>();
ن. ب.ال Intercept()
طريقة التمديد في Ninject.Extensions.Interception.Infrastructure.Language.ExtensionsForIBindingSyntax