SimpleInjector解析实现接口的所有类型而不显式绑定

时间:2013-01-27 15:13:04

标签: c# .net unit-testing dependency-injection simple-injector

我有一个界面“ISetting”。我有POCO类实现这个空接口,带有一些自动getter / setter的属性。

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

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

这是可能的,方法是什么?

提前致谢!

1 个答案:

答案 0 :(得分:1)

使用ResolveUnregisteredType事件可以使用此功能。例如:

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);
        });
    }
};