簡體   English   中英

如何更新已注冊的服務溫莎城堡

[英]How to update already registered service Castle Windsor

我是DI容器的初學者。

我正在使用第三方框架,它有一個類似下面的類

public class PurchaseOrderAppService : IPurchaseOrderAppService, IAutoRegister
    {
        private readonly IEmail _email;

        public PurchaseOrderAppService(IEmail email)
        {
            _email = email;
        }
    }

繼承IAutoRegister接口的所有類均由第三方框架自動注冊。 電子郵件類別如下

public class Email : IEmail, IAutoRegister
{
    public Send(string message)
    {
        //Send a message
    }
}

我想要的是我希望PurchaseOrderAppService類使用另一個名為MyEmail而不是Email的類。

public class MyEmail : IEmail
{
    public Send(string message)
    {
        //Send a message another way
    }
}

如何按框架更新已注冊的服務?

謝謝。

謝謝@Thuan,

在第二個鏈接中,已廢棄了名為ServiceOverrides的方法,我可以改用DependsOn

IocContainer.Register(
    Component.For<IEmail>()
    .ImplementedBy<MyEmail>()
    .Named("Email.MyEmail"),
    Component.For<IPurchaseOrderAppService>()
    .ImplementedBy<PurchaseOrderAppService>()
    .Named("PurchaseOrderAppServiceWithMyEmail").IsDefault()
    .DependsOn(Dependency.OnComponent(typeof(IEmail), "Email.MyEmail")));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM