gpt4 book ai didi

c# - Autofac:IEnumerable 将始终返回从 IInterface 派生的对象列表?

转载 作者:行者123 更新时间:2023-12-04 16:36:02 27 4
gpt4 key购买 nike

我继承了一个相当大的代码库,大量使用了 Autofac。我发现了一些有趣甚至有点令人费解的事情。

我有一个类

public class ClassA
{
public ClassA(IEnumerable<IInterface> allObjects)
{
}
}

在我的项目中,我有几个实现 IInterface 的类, 比如

public class AInterface:IInterface {};
public class BInterface:IInterface {};
public class CInterface:IInterface {};

有趣的是,如果我让 Autofac 实例化 ClassA , 那么对于 allObjects参数,Autofac 会给我 List<IInterface>(){AInterface, BInterface, CInterface}

Autofac 似乎正在遍历应用程序域中加载的程序集中的所有类型,并自动实例化从 IInterface 继承的类.

这是记录在案的行为吗?如果是,在哪里?虽然这完全符合我的预期,但我仍然希望确保它有文档记录并得到官方支持,这样我就不会依赖未记录的(因此会发生变化)行为,这些行为只是因为偶然而起作用。

最佳答案

此行为记录在 Implicit Relationship Types

For example, when Autofac is injecting a constructor parameter of type IEnumerable<ITask> it will not look for a component that supplies IEnumerable<ITask>. Instead, the container will find all implementations of ITask and inject all of them.

关于c# - Autofac:IEnumerable<IInterface> 将始终返回从 IInterface 派生的对象列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69732743/

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