autofac和aspect 结合实现aop方法拦截 method not found问题
cxydotnet opened this issue · 1 comments
cxydotnet commented
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.ActivatingEventArgs
1<System.Object>>)'.”
请问这是什么原因,是aop实现错误,还是autofac和aspect兼容性问题?
liuhaoyang commented
是autofac 6.0 和 aspectcore不兼容的问题。相关修复PR已经合并。