2

我需要一些帮助。我正在尝试使用 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
 {
 }
4

1 回答 1

1

如果您想让 Autofac 将您的自定义格式化程序添加到标记的控制器,那么您不需要将其添加到,GlobalConfiguration.Configuration.Formatters因为它使您的格式化程序全局可用并且它阻止 Autofac 在其上注入属性。

所以删除GlobalConfiguration.Configuration.Formatters.Insert呼叫

并使用以下确切语法来注册您的格式化程序:

builder.Register<MediaTypeFormatter>(c => new UserMediaFormatter())
       .PropertiesAutowired()
       .InstancePerApiControllerType(typeof(UsersController));
于 2013-09-14T10:25:49.537 回答