gpt4 book ai didi

c# - 类型 '***' 不可分配给 Autofac 中的服务 '***'

转载 作者:可可西里 更新时间:2023-11-01 07:50:01 25 4
gpt4 key购买 nike

我现在在我的项目中使用 System.Linq.Dynamic 进行动态查询。我使用 Autofac 作为我的默认 IOC 容器。但是现在我在注册通用组件时遇到了问题,这是我的代码:

界面:

public interface IDynamicQuery
{
IQueryable<T> CreateDynamicQuery<T>(string propertyName, string propertyValue, Expression<Func<T, bool>> where) where T:class;
}

类(class):

public class DynamicQuery :IDynamicQuery
{
public DynamicQuery(IUnitOfWork unitOfWork)
{
this.unitOfWork = unitOfWork;
}
private readonly IUnitOfWork unitOfWork;

public IQueryable<T> CreateDynamicQuery<T>(string propertyName, string propertyValue, Expression<Func<T, bool>> where) where T:class
{
var appRepository = unitOfWork.Repository<T>();

IQueryable<T> queryResult = null;
if (propertyName.Contains('$'))
propertyName = propertyName.Replace('$', '.');
queryResult = appRepository.GetMany(where).Where("" + propertyName + ".Contains(\"" + propertyValue + "\")");
return queryResult;
}
}

然后我在应用程序启动入口注册它们:

builder.RegisterType<IDynamicQuery>().As<DynamicQuery>().InstancePerHttpRequest();

但是当我基于 MVC 4 启动我的项目时,它会抛出一个异常:

 The type 'TinyFrame.Framework.Query.IDynamicQuery' is not assignable to service 'TinyFrame.Framework.Query.DynamicQuery'.

异常抛出在:var container = builder.Build();

我知道如何在 autofac 中注册一个泛型类,但我不知道如何注册我提出的以上类,任何人都可以帮助我吗?我是 autofac 的新手,谢谢你的建议。

最佳答案

@CharlieShi 我遇到了同样的问题,我注意到我忘记为我的类添加继承。但在你的情况下,试试这个:

builder.RegisterType<DynamicQuery>().As<IDynamicQuery>().InstancePerHttpRequest();

用类反转接口(interface)!

关于c# - 类型 '***' 不可分配给 Autofac 中的服务 '***',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23331117/

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