Сега правя динамична заявка в моя проект, като използвам System.Linq.Dynamic. Използвам Autofac като IOC контейнер по подразбиране. Но сега получавам проблем при регистриране на общи компоненти, ето моят код:
интерфейсът:
public interface IDynamicQuery
{
IQueryable<T> CreateDynamicQuery<T>(string propertyName, string propertyValue, Expression<Func<T, bool>> where) where T: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, благодаря за съвет.
IDynamicQuery
не еDynamicQuery
, ноDynamicQuery
ЕIDynamicQuery
. - person Aron   schedule 28.04.2014