该行为过滤我希望注入开始喜欢这个
public class UserAuthorisation : AuthorizeAttribute
{
public IWcfClientProxy<IAppFrameworkServiceChannel>
FrameworkServiceProxy { get; set; }
我已经安装我的容器是这样的:
container.Register<IWcfClientProxy<IAppFrameworkServiceChannel>>(
()=> new WcfClientProxy<IAppFrameworkServiceChannel>());
container.RegisterInitializer<UserAuthorisation>(handler =>
{
handler.FrameworkServiceProxy = container
.GetInstance<IWcfClientProxy<IAppFrameworkServiceChannel>>();
});
当我运行这个FrameworkServiceProxy
属性为null。
我已阅读这篇文章: 简单的喷油器:注射在基类的属性和遵循的答案。 我也曾在此页面读取例如简单的喷油器文档 。
我不是注入到一个基类,也许这是问题?
## UPDATE ##
我加入了更多的信息,我认为应该从什么史蒂文斯回答有人说工作。
我现在用的NuGet包的MVC 3,这增加了以下内容的应用:
public static class SimpleInjectorInitializer
{
/// <summary>Initialize the container and register it as MVC3 Dependency Resolver.</summary>
public static void Initialize()
{
var container = new Container();
InitializeContainer(container);
container.RegisterMvcControllers(Assembly.GetExecutingAssembly());
container.RegisterMvcAttributeFilterProvider();
container.Verify();
DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container));
}
private static void InitializeContainer(Container container)
{
container.Register<IWcfClientProxy<IAppFrameworkServiceChannel>>(() => new WcfClientProxy<IAppFrameworkServiceChannel>());
container.RegisterInitializer<UserAuthorisation>(handler =>
{
handler.FrameworkServiceProxy = container.GetInstance<IWcfClientProxy<IAppFrameworkServiceChannel>>();
});
}
这包括container.RegisterMvcAttributeFilterProvider();
作为我现在明白了,应该注册一个过滤器供应商,应该意味着过滤器通过容器创建(这种认识可能是错误的),然后属性将自动有线了。
我的过滤器注册在Global.asax.cs中,像这样:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new UserAuthorisation());
}
在我看来,那是不是由容器所创建的过滤器,所以我想我需要做别的事情让这样的事情发生?