通用类型autofac更改类型

时间:2018-02-04 09:28:52

标签: c# dependency-injection autofac

我使用autofac进行泛型类型注入,我想用另一个泛型类型注入调用基本DI中的函数。我是怎么做到的它有可能吗?

例如:

public class FooRepository : BaseRepository<Foo>
{
    public FooRepository(IUser user) : base(user)
    {
    }

     public override int Add(Foo entity)
    {
        var d =base.Add(entity)

        //how declare BaseRepository<Bar> 
        var c = ?????.Add(entity.Bar);

        return d;

    }
 }

2 个答案:

答案 0 :(得分:0)

有些相似typeof(BaseRepository<>).MakeGenericType(typeof(Bar))可能会或可能不会起作用,具体取决于您实际未指定的上下文。请注意,我提供了一个反射驱动的解决方案,肯定比正常的子类化慢。

答案 1 :(得分:0)

我找到了简单的解决方案

public class FooRepository : BaseRepository<Foo>
{
   IBaseRepository<Bar> _barep;

  public FooRepository(IUser user, IBaseRepository<Bar> barep) : base(user)
   {
    _barep=barep;
   }

 public override int Add(Foo entity)
{
    var d =base.Add(entity)

    //how declare BaseRepository<Bar> 
    var c = barep.Add(entity.Bar);

    return d;

}

}

感谢