2013-09-11 3 views
1

Мне нужна помощь. Я пытаюсь использовать Autofac, чтобы получить несколько зависимостей, которые необходимы для персонализированного медиаформата. Я следил за Wiki, но это немного запутанно. Я пытаюсь использовать вложение свойств для медиаформата, так как он должен быть зарегистрирован в глобальной конфигурации.Autofac, WebAPI и форматы носителей

Код:

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 
{ 
} 
+1

Хотите ли вы использовать 'UserMediaFormatter' глобально во всех геймпаде? Потому что 'InstancePerApiControllerType' регистрирует его только для' UserController', или это то, что вы хотели бы иметь в любом случае? – nemesv

+0

Это то, что я хотел бы иметь, но по какой-то причине он, похоже, не работает. – Jamie

ответ

1

Если вы хотите, чтобы Autofac, чтобы добавить свой собственный форматировщик к отмеченным контроллерам, то вам не нужно, чтобы добавить его к GlobalConfiguration.Configuration.Formatters, потому что это делает ваш форматировщик доступны по всему миру, и это предотвращает Autofac для ввода свойств на него.

Так удалить GlobalConfiguration.Configuration.Formatters.Insert вызов

и использовать следующий точный синтаксис, чтобы зарегистрировать свой форматировщик:

builder.Register<MediaTypeFormatter>(c => new UserMediaFormatter()) 
     .PropertiesAutowired() 
     .InstancePerApiControllerType(typeof(UsersController)); 
+0

Спасибо, что решил мою проблему. – Jamie

Смежные вопросы