小编sho*_*ode的帖子

使用Autofac注册通用类型

我有UnitofWork类,它实现了IUnitOfWork.我试着用autofac注册:

var builder = new ContainerBuilder();
builder
    .RegisterGeneric(typeof(UnitOfWork<Repository<>,>))
    .As(typeof(IUnitOfWork))
    .InstancePerDependency();
Run Code Online (Sandbox Code Playgroud)

实施是:

public class UnitOfWork<T, O> : IUnitOfWork
    where T : Repository<O>
    where O : BaseEntity
{
}

public interface IUnitOfWork : IDisposable
{
    void SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

给出"预期类型"错误

但是这个工作在另一个项目上:

public class Repository<T> : GenericRepository<T> 
    where T : BaseEntity
{
    public Repository(IDbContext context)
        : base(context) { }   
}

public abstract class GenericRepository<T> 
    : IRepository<T>, IQueryable<T> where T : BaseEntity
{
}

builder
    .RegisterGeneric(typeof(Repository<>))
    .As(typeof(IRepository<>))
    .InstancePerHttpRequest();
Run Code Online (Sandbox Code Playgroud)

c# generics unit-of-work autofac

30
推荐指数
1
解决办法
4万
查看次数

标签 统计

autofac ×1

c# ×1

generics ×1

unit-of-work ×1