我需要一些帮助。我正在尝试使用Autofac来获取自定义媒体格式化程序所需的一些依赖项。我跟着Wiki,但有点混乱。我正在尝试为媒体格式化程序使用属性注入,因为它需要在全局配置中注册。
代码:
public class UserMediaFormatter : JsonMediaTypeFormatter
{
public UsersRepository repository { get; set; }
}
public class WebApiApplication : System.Web.HttpApplication
{
GlobalConfiguration.Configuration.Formatters.Insert(2, new UserMediaFormatter());
builder.RegisterType(typeof(UserMediaFormatter)).PropertiesAutowired()
.As<MediaTypeFormatter>()
.InstancePerApiControllerType(typeof (UsersController));
}
[AutofacControllerConfiguration]
public class UsersController : ApiController
{
}
答案 0 :(得分:1)
如果您想让Autofac将自定义格式化程序添加到标记的控制器,那么您无需将其添加到GlobalConfiguration.Configuration.Formatters
,因为它会使您的格式化程序全局可用,并且它会阻止Autofac在其上注入属性
请删除GlobalConfiguration.Configuration.Formatters.Insert
来电
并使用以下确切语法注册格式化程序:
builder.Register<MediaTypeFormatter>(c => new UserMediaFormatter())
.PropertiesAutowired()
.InstancePerApiControllerType(typeof(UsersController));