如何检查注册的组件之前是否已解决?

时间:2018-07-11 07:36:20

标签: c# castle-windsor

长话短说,我正在对Windsor进行修改,这将使我能够覆盖已注册的服务。真正意义上的覆盖是:如果您使用现有名称注册新服务,则旧注册将被删除,而新注册将被替换。

但是,我还想进行一些安全检查。特别是,如果以前已解决了旧组件的问题,我想禁止这种行为(以确保我不会泄漏组件并获得一致的依赖性解析)。现在,如果我既可以访问旧组件的IHandler也可以访问IKernel,该如何检查?现在,我使用ICommissionConcern标记所有已创建的ComponentModel

class NameOverrideContributor : IContributeComponentModelConstruction
{
    public void ProcessModel(IKernel kernel, ComponentModel model)
    {
        model.Configuration.Attributes.Add(NameOverrideSubsystem.CreatedFlag, null);
        model.Lifecycle.Add(new NameOverrideComission());
    }

    class NameOverrideComission : ICommissionConcern
    {
        public void Apply(ComponentModel model, object component)
        {
            model.Configuration.Attributes[NameOverrideSubsystem.CreatedFlag] = "Component created";
        }
    }
}

然后只需检查此标志。有更好的方法吗?

0 个答案:

没有答案