此代码:
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(AllTypes.FromThisAssembly()
//AllTypes.FromAssemblyNamed("Acme.Crm.Data")
.Where(type => type.Name.EndsWith("Repository"))
.WithService.DefaultInterfaces()
.Configure(c => c.LifeStyle.PerWebRequest));
}
...从官方文档here派生/改编,失败,“只有赋值,调用,递增,递减,等待和新对象表达式才能用作语句“
我犯了什么罪?或官方文档误导我?
Simon Whitehead要求,这是全班:
using Castle.MicroKernel.Registration;
using Castle.MicroKernel.SubSystems.Configuration;
using Castle.Windsor;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Castle.MicroKernel.Lifestyle;
namespace HandheldServer.DIInstallers
{
public class RepositoriesInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(//Classes.FromThisAssembly()
//AllTypes.FromAssemblyNamed("Acme.Crm.Data")
AllTypes.FromThisAssembly()
.Where(type => type.Name.EndsWith("Repository"))
.WithService.DefaultInterfaces()
//.Configure(c => c.LifeStyle.PerWebRequest));
.Configure(c => c.LifeStyle.PerWebRequest));
}
}
}
答案 0 :(得分:3)
我认为这是文档。 Configure接受一个Action,它是一个应该返回void的函数,这个lambda试图返回一个值。
使用
.Configure(c => c.LifestylePerWebRequest())
或者看起来你不打算为不同的组件使用不同的生活方式,你可以在不使用配置的情况下应用生活方式:
.Where(type => type.Name.EndsWith("Repository"))
.WithService.DefaultInterfaces()
.LifestylePerWebRequest());