C# 如何注入Func<;T、 U>;温莎集装箱

C# 如何注入Func<;T、 U>;温莎集装箱,c#,asp.net,dependency-injection,delegates,castle-windsor,C#,Asp.net,Dependency Injection,Delegates,Castle Windsor,尝试以下排列 public BranchRepository(FoodieTenantContext ctx) : base(ctx) { } container.Register( 用于()的组件 .实施人(类型(假定)) .生活方式 ); 集装箱。登记( 用于()的组件 .实施人(类型(假定)) .生活方式 ); 但无法实例化并抛出以下错误 键入foodie.common.Repository.IRepository1[[foodie.tenant.EF

尝试以下排列

 public BranchRepository(FoodieTenantContext ctx)
        : base(ctx)
    {
    }
container.Register(
用于()的组件
.实施人(类型(假定))
.生活方式
);
集装箱。登记(
用于()的组件
.实施人(类型(假定))
.生活方式
);
但无法实例化并抛出以下错误

键入foodie.common.Repository.IRepository
1[[foodie.tenant.EF.Repository.Domain.branchrespository,foodie.tenant.EF,Version=1.0.0,Culture=neutral,PublicKeyToken=null]]是抽象的。\r\n因此,无法将其实例化为服务“foodie.common.Repository.IRepository”的实现[[foodie.tenant.EF.Repository.Domain.BranchRepository,foodie.tenant.EF,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null]'。您忘记代理它了吗

谢谢。

你可以试试这个:

  container.Register(
          Component.For<Func<FoodieTenantContext, BranchRepository>>()
          .ImplementedBy(typeof(IRepository<BranchRepository>))
          .LifestyleTransient()
         );

        container.Register(
           Component.For<Func<FoodieTenantContext, BranchContactRepository>>()
           .ImplementedBy(typeof(IRepository<BranchContactRepository>))
           .LifestyleTransient()
          );
container.Register(
Component.For(),
用于()的组件
.Instance(c=>container.Resolve(new{ctx=c}))
.生活方式
);
但我建议你还是去打字厂吧

是的,它解决了问题:)谢谢
  container.Register(
          Component.For<Func<FoodieTenantContext, BranchRepository>>()
          .ImplementedBy(typeof(IRepository<BranchRepository>))
          .LifestyleTransient()
         );

        container.Register(
           Component.For<Func<FoodieTenantContext, BranchContactRepository>>()
           .ImplementedBy(typeof(IRepository<BranchContactRepository>))
           .LifestyleTransient()
          );
container.Register(
    Component.For<BranchRepository>(),
    Component.For<Func<FoodieTenantContext, BranchRepository>>()
    .Instance(c => container.Resolve<BranchRepository>(new { ctx = c }))
    .LifestyleTransient()
);