Castle Windsor تسجيل السيارات من اثنين من التجمعات المختلفة؟

StackOverflow https://stackoverflow.com/questions/2059537

  •  20-09-2019
  •  | 
  •  

سؤال

    container.Register(
        AllTypes.Pick().FromAssembly(typeof (UserRepository).Assembly)
            .WithService.FirstInterface());

ستعمل الكود أعلاه حاليًا بشكل جيد إذا كانت الواجهة أيضًا في نفس المجموعة ، لكنها ستنفجر إذا كانت iuserrepository من مجموعة مختلفة.

هل التسجيل التلقائي من تجمعين مختلفين ممكن؟ نسيت شيئا ما هنا؟

هل كانت مفيدة؟

المحلول

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

container.Register(AllTypes
    .FromAssemblyContaining<ConfigurationService>()
    .Where(t => t.Name.EndsWith("Service", StringComparison.Ordinal))
    .WithService
    .FirstInterface()
    .Configure(reg => reg.LifeStyle.PerWebRequest));

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

تحقق مما إذا كان الانصهار يمكن تحميل النوع من هذا التطبيق على الإطلاق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top