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.IRepository1[[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()
);