简单注入器解析实现接口的所有类型,而无需显式绑定

本文关键字:绑定 类型 注入器 实现 接口 简单 | 更新日期: 2023-09-27 17:56:17

我有一个接口"ISetting"。我有 POCO 类来实现这个空接口,其中包含一些带有一些自动获取器/设置器的属性。

我希望 SimpleInjector 检查请求的每个类型(未显式注册),如果它实现了此接口,请使用我提供的方法解决它。

这允许我将 POCO 对象用于设置,并可以选择使用默认值(来自构造函数)将 POCO 对象绑定到其自身。这对于单元测试以及关闭设置(使用默认值)非常有用。

这可能吗,方法是什么?

提前感谢!

简单注入器解析实现接口的所有类型,而无需显式绑定

这可以使用 ResolveUnregisterType 事件。例:

container.ResolveUnregisteredType += (s, e) =>
{
    Type type = e.UnregisteredType;
    if (typeof(ISetting).IsAssignableFrom(type))
    {
        // If you need raw performance, there is also
        // an overload that takes in an Expression.
        e.Register(() =>
        {
            // Do something useful here. Example:
            return Activator.CreateInstance(type);
        });
    }
};