Open fs7744 opened 4 years ago
该场景特殊,一般aop 使用场景应该佷难遇见
https://github.com/dotnetcore/AspectCore-Framework/blob/master/src/AspectCore.Core/Utils/ProxyGeneratorUtils.cs#L365
应该判断 method.IsAbstract
method.IsAbstract
if (method.IsAbstract) { var methodBuilder = implTypeBuilder.DefineMethod(method.Name, InterfaceMethodAttributes, method.CallingConvention, method.ReturnType, method.GetParameters().Select(x => x.ParameterType).ToArray()); var ilGen = methodBuilder.GetILGenerator(); if (method.ReturnType != typeof(void)) { ilGen.EmitDefault(method.ReturnType); } ilGen.Emit(OpCodes.Ret); implTypeBuilder.DefineMethodOverride(methodBuilder, method); }
@fs7744 能否提供一些复现的案例,你说的覆盖具体是指怎么覆盖了
插眼
时间太久了,要不是有人提醒,都已经忘了这个issue了, 当时应该是上面那段代码所示, 有使用接口默认方法的场景都会被替换为代理类中的实现的方法,
是如何解决的呢?我现在也遇到了这个问题
该场景特殊,一般aop 使用场景应该佷难遇见
https://github.com/dotnetcore/AspectCore-Framework/blob/master/src/AspectCore.Core/Utils/ProxyGeneratorUtils.cs#L365
应该判断
method.IsAbstract