gpt4 book ai didi

c# - IPackage 类实现中的简单注入(inject)器依赖注入(inject)

转载 作者:行者123 更新时间:2023-11-30 23:32:59 24 4
gpt4 key购买 nike

有什么方法可以在 SimpleInjector.Packaging.IPackage 类实现中进行依赖注入(inject)?我正在使用装饰器注册,并且有可用的 RegisterDecorator 重载,它允许添加谓词以确定是否应将装饰器应用于特定服务类型。

为了进行单元测试,谓词应该可以通过参数进行配置。我试图在 Package 类中注入(inject)服务,但出现了“Packages must have a default constructor.”异常

谢谢

最佳答案

除了@Steven 的回答(我同意)之外,您还可以创建自己的IServicePackage 接口(interface)并将配置类传递给它:

public class CompositionRootSettings {

public string Something { get; set; }

}

public interface IServicePackage
{
void RegisterServices(Container container, CompositionRootSettings settings);
}

public static void RegisterServicePackages(this Container container, CompositionRootSettings settings)
{
var packages = from assembly in AppDomain.CurrentDomain.GetAssemblies()
from type in assembly.GetTypes()
where typeof(IServicePackage).IsAssignableFrom(type)
where !type.IsAbstract
select (IServicePackage)Activator.CreateInstance(type);

packages.ToList().ForEach(p => p.RegisterServices(container, settings));
}

关于c# - IPackage 类实现中的简单注入(inject)器依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34096702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com