C# 为什么CastleWindsor';s开始超出范围?
我正在尝试将Castle Windsor添加到我的Web API项目中,并遵循以下步骤,但在这行代码中遇到编译时错误:C# 为什么CastleWindsor';s开始超出范围?,c#,dependency-injection,asp.net-web-api,inversion-of-control,castle-windsor,C#,Dependency Injection,Asp.net Web Api,Inversion Of Control,Castle Windsor,我正在尝试将Castle Windsor添加到我的Web API项目中,并遵循以下步骤,但在这行代码中遇到编译时错误: this._scope = container.BeginScope(); …作为“'Castle.Windsor.IWindsorContainer'不包含'BeginScope'的定义,并且找不到接受'Castle.Windsor.IWindsorContainer'类型的第一个参数的扩展方法'BeginScope'(是否缺少using指令或程序集引用?) 以下是完整的代
this._scope = container.BeginScope();
…作为“'Castle.Windsor.IWindsorContainer'不包含'BeginScope'的定义,并且找不到接受'Castle.Windsor.IWindsorContainer'类型的第一个参数的扩展方法'BeginScope'(是否缺少using指令或程序集引用?)
以下是完整的代码,以便在上下文中查看:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http.Dependencies;
using Castle.Windsor;
using Castle.MicroKernel.Registration;
using System.Web.Http;
namespace PlatypiPieServer
{
public class WindsorDependencyResolver : IDependencyResolver
{
private readonly IWindsorContainer _container;
public WindsorDependencyResolver(IWindsorContainer container)
{
_container = container;
}
public IDependencyScope BeginScope()
{
return new WindsorDependencyScope(_container);
}
public object GetService(Type serviceType)
{
if (_container.Kernel.HasComponent(serviceType))
return this._container.Resolve(serviceType);
else
return null;
}
public IEnumerable<object> GetServices(Type serviceType)
{
return _container.ResolveAll(serviceType).Cast<object>();
}
public void Dispose()
{
_container.Dispose();
}
}
public class WindsorDependencyScope : IDependencyScope
{
private readonly IWindsorContainer _container;
private readonly IDisposable _scope;
public WindsorDependencyScope(IWindsorContainer container)
{
this._container = container;
this._scope = container.BeginScope();
}
public object GetService(Type serviceType)
{
if (_container.Kernel.HasComponent(serviceType))
return _container.Resolve(serviceType);
else
return null;
}
public IEnumerable<object> GetServices(Type serviceType)
{
return this._container.ResolveAll(serviceType).Cast<object>();
}
public void Dispose()
{
this._scope.Dispose();
}
}
public class ApiControllersInstaller : IWindsorInstaller
{
public void Install(Castle.Windsor.IWindsorContainer container, Castle.MicroKernel.SubSystems.Configuration.IConfigurationStore store)
{
container.Register(Classes.FromThisAssembly()
.BasedOn<ApiController>()
.LifestylePerWebRequest());
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.Http.Dependencies;
使用温莎城堡;
使用Castle.MicroKernel.Registration;
使用System.Web.Http;
命名空间平台服务器
{
公共类WindsorDependencyResolver:IDependencyResolver
{
专用只读IWindsorContainer\u容器;
公共风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场风电场
{
_容器=容器;
}
公共IDependencyScope BeginScope()
{
退回新的WindsorDependencyScope(_容器);
}
公共对象GetService(类型serviceType)
{
if(_container.Kernel.HasComponent(serviceType))
返回此.\u container.Resolve(serviceType);
其他的
返回null;
}
公共IEnumerable GetServices(类型serviceType)
{
return _container.ResolveAll(serviceType.Cast();
}
公共空间处置()
{
_container.Dispose();
}
}
公共级风索登月镜:IDependencyScope
{
专用只读IWindsorContainer\u容器;
私有只读IDisposable _作用域;
公共风向仪(IWindsorContainer)
{
这个._容器=容器;
这个.u scope=container.BeginScope();
}
公共对象GetService(类型serviceType)
{
if(_container.Kernel.HasComponent(serviceType))
返回_container.Resolve(serviceType);
其他的
返回null;
}
公共IEnumerable GetServices(类型serviceType)
{
返回此。_container.ResolveAll(serviceType).Cast();
}
公共空间处置()
{
此._scope.Dispose();
}
}
公共类APIControllerInstaller:IWindsorInstaller
{
public void安装(Castle.Windsor.IWindsorContainer容器、Castle.MicroKernel.subsystem.Configuration.IConfigurationStore)
{
container.Register(Classes.fromthissembly())
.BasedOn()
.LifestylePerWebRequest());
}
}
}
贝金斯考普在哪里?它被弃用了吗?它是一种扩展方法。您需要导入
Castle.MicroKernel.lifesture
命名空间