dotnetcore/AspectCore-Framework

autofac和aspect 结合实现aop方法拦截 method not found问题

cxydotnet opened this issue · 1 comments

AspectCore.Abstractions (2.1.0)
autofac(6.1.0)
AspectCore.Extensions.Autofac(2.1.0)
autofac注册代码
` public class AutofacModuleRegister : Autofac.Module
{
//重写Autofac管道Load方法,在这里注册注入
protected override void Load(ContainerBuilder builder)
{

        //注册Service中的对象,Service中的类要以Service结尾,否则注册失败
        builder.RegisterAssemblyTypes(GetAssemblyByName("SD.Bll")).Where(a => a.Name.EndsWith("Bll")).AsImplementedInterfaces().AsSelf();

        builder.RegisterAssemblyTypes(GetAssemblyByName("SD.DA")).Where(a => a.Name.EndsWith("DA")).AsImplementedInterfaces();

        builder.RegisterDynamicProxy();
    }
    /// <summary>
    /// 根据程序集名称获取程序集
    /// </summary>
    /// <param name="AssemblyName">程序集名称</param>
    /// <returns></returns>
    public static Assembly GetAssemblyByName(String AssemblyName)
    {
        return Assembly.Load(AssemblyName);
    }
}`

接口定义
` public interface IAccountBll
{
Account GetById(string id);

    LoginData GetByLoginData(string id);

    [RedisCache]
    string test();

}`

类实现
public virtual string test() { return "test"; }

运行报错:
System.MissingMethodException:“Method not found: 'Void Autofac.Core.IComponentRegistration.add_Activating(System.EventHandler1<Autofac.Core.ActivatingEventArgs1<System.Object>>)'.”

请问这是什么原因,是aop实现错误,还是autofac和aspect兼容性问题?

是autofac 6.0 和 aspectcore不兼容的问题。相关修复PR已经合并。