Nie mogę uzyskać wtyczki zależnej działającej z niestandardową klasą ActionFilterAttribute przy użyciu narzędzia Unity bootstrapper dla ASP.NET Web Pakiet API nuget.Nie można wstrzykiwać w System.Web.Http.Filters.ActionFilterAttribute za pomocą programu Unity bootstrapper dla pakietu ASP.NET Web API nuget
Zarejestrowałem typ w UnityConfig i używam go gdzie indziej (używając tam jednak iniekcji konstruktora) i działa dobrze.
public static void RegisterTypes(IUnityContainer container)
{
container.RegisterType<ISettingService, SettingService>();
...
}
Kod jest wywoływany pomyślnie, jednak instancjonowany obiekt (usugaService) ma wartość null.
public class APIKeyValidationAttribute : ActionFilterAttribute
{
[Dependency]
public ISettingService settingService { get; set; }
public override void OnActionExecuting(HttpActionContext actionContext)
{
...
if (settingService == null)
{
throw new Exception("settingService is null");
}
...
}
Co muszę zrobić, aby to zadziałało? Długo szukałem i mogę znaleźć przykłady MVC lub Web API z różnymi wtryskiwaczami zależności.
Dzięki stosy Tuzo. Stworzyłem nową klasę, dodałem metodę RegisterFilterProviders do klasy UnityWebApiActivator add dodano przestrzeń nazw dla nowej klasy. Ten błąd jest generowany "System.Collections.Generic.IEnumerable" nie zawiera definicji "ToList" i metody rozszerzenia "ToList" akceptującej pierwszy argument typu "System.Collections" .Generic.Inumerable "można znaleźć (czy brakuje dyrektywy użycia lub odwołania do zestawu?) Czy istnieją inne przestrzenie nazw, które muszę dodać? –
@MichaelS: 'ToList()' jest metodą rozszerzenia w 'System.Linq'. Dodaj 'using System.Linq;' do górnej części pliku, aby rozwiązać ten błąd kompilacji. –
Dzięki temu zadziałało dobrze. Z jakiegoś powodu po kliknięciu prawym przyciskiem nie było opcji "Rozwiąż". –