Closed MateralCMX closed 1 year ago
这个问题上是runtime的一个bug,在.net8里面被修复了 https://github.com/dotnet/runtime/issues/46132 临时修复方案就是按提供的示例一样,把需要注入的构造函数放前面
👍🏻
这个问题上是runtime的一个bug,在.net8里面被修复了 dotnet/runtime#46132 临时修复方案就是按提供的示例一样,把需要注入的构造函数放前面
经过验证确实是这个Bug导致的
我有这样两个接口
有两个类分别实现了他们
并实现了一个拦截器
这是主要方法
期望输出为:
实际输出为:
经过调试发现,在使用拦截器后(不论是全局方式还是Attribute方式),从容器获取接口实现类时调用的构造函数不是参数最多的构造函数(这只是表象),在该示例中,容器调用了方法ExternalServiceImpl()而非ExternalServiceImpl(IParentService)方法,我还发现调用的构造函数与代码文件中的位置有关 将类ExternalServiceImpl调整为如下代码后(交换了构造函数的位置),获得了期望输出
示例地址AspectCoreDemo