Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6749741
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 26, 20262026-05-26T12:43:35+00:00 2026-05-26T12:43:35+00:00

I have been trying to configure Windsor to provide a different implementation for a

  • 0

I have been trying to configure Windsor to provide a different implementation for a service depending on which class is being constrcuted:

I have read this
http://docs.castleproject.org/Windsor.Registering-components-one-by-one.ashx#Supplying_the_component_for_a_dependency_to_use_Service_override_9

and asked this yesterday
Windsor Ioc container: How to register that certain constructors take different implementation of an interface

The answer to that question works correctly when I resolve the class directly, but not when it is in an object graph a few levels deep, and the class I want to override is used as a default implementation of another interface in a different registration

e.g.

I have 2 MVC controllers. One for logging and one for cardpayments. The logging one takes a logging provider which in turn takes an IService. The CardPaymentController takes a card payment provider which in turn takes an IService. The CardPaymentProvider should get a secure service and the logging provider a normal service

code is below:

Registrations:

Component.For<ILoggingProvider>().ImplementedBy<LoggingProvider>(),
Component.For<ICardPaymentProvider>().ImplementedBy<CardPaymentProvider>(),
Component.For<IService>().ImplementedBy<WebService>().Named("default"),
Component.For<IService>().ImplementedBy<SecureWebService>().Named("secure"),
Component.For<CardPaymentProvider>().ServiceOverrides(ServiceOverride.ForKey("service").Eq("secure")),
Component.For<LoggingProvider>().ServiceOverrides(ServiceOverride.ForKey("service").Eq("default"))

Class hierarchy:

 public LoggingController(ILoggingProvider loggingProvider)
 {
            this.loggingProvider = loggingProvider;
 }

 public CardPaymentController(ICardPaymentProvider cardPaymentProvider)
{
            this.cardPaymentProvider = cardPaymentProvider;
}

    public interface IService
    {
        void Doit();
    }
    public class WebService : IService
    {
        public void Doit()
        {
            throw new NotImplementedException();
        }
    }
    public class SecureWebService : IService
    {
        public void Doit()
        {
            throw new NotImplementedException();
        }
    }
    public class CardPaymentProvider : ICardPaymentProvider
    {
        private readonly IService service;
        public CardPaymentProvider(IService service)
        {
            this.service = service;
        }
    }
    public interface ICardPaymentProvider
    {
    }
    public class LoggingProvider : ILoggingProvider
    {
        private readonly IService service;
        public LoggingProvider(IService service)
        {
            this.service = service;
        }
    }
    public interface ILoggingProvider
    {
    }

This produces an error on start up:

“There is a component already registered for the given key Spike.CardPaymentProvider”

If I add Named("somename") to either the CardPaymentProvider registration or the ICardPaymentProvider registration, then it starts OK, but doesn’t provide a secure implementation of the service to the CardPaymentProvider – just a normal version.

What am I doing wrong?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-26T12:43:36+00:00Added an answer on May 26, 2026 at 12:43 pm

    You have to define the service overrides in the same registration. Instead of:

    Component.For<ICardPaymentProvider>().ImplementedBy<CardPaymentProvider>(),
    Component.For<CardPaymentProvider>().ServiceOverrides(ServiceOverride.ForKey("service").Eq("secure")),
    

    do:

    Component.For<ICardPaymentProvider>()
             .ImplementedBy<CardPaymentProvider>()
             .ServiceOverrides(ServiceOverride.ForKey("service").Eq("secure")),
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have been trying to read a picture saved in Access DB as a
I have been trying to run configure to prepare the make file for GTK
I have been trying to configure mod_wsgi for two days and still no luck.
I have been trying to configure my apache server to support virtual hosts, these
I have been trying to make a simple web service and have been following
I have been trying to follow this example from propel to configure a custom
I have been trying to configure a small website on a Windows Server 2008
I have been trying to implement Win32's MessageBox using GTK. The app uses SDL/OpenGL,
I have been trying to find a really fast way to parse yyyy-mm-dd [hh:mm:ss]
I have been trying to determine a best case solution for registering a COM

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.