ASP.NET Web için Unity önyükleyicisini kullanarak özel bir ActionFilterAttribute sınıfı ile bağımlılık enjeksiyonu yapamıyorum API nuget paketi.System.Web.Http.Filters.ActionFilterAttribute, ASP.NET Web API nuget paketi için Unity bootstrapper kullanarak enjekte edilemiyor
UnityConfig türünü kaydettim ve başka bir yerde kullanıyorum (burada yapıcı yerleştirme kullanarak) ve iyi çalışıyor.
Kod başarıyla çağrılıyor, ancak örneklenen nesne (settingService) boş.
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");
}
...
}
Bu çalışma için ne yapmam gerekiyor? Uzun zamandır aradığım ve farklı bağımlılık enjektörleri ile sadece MVC veya Web API için örnekler bulabilirsiniz.
Teşekkürler yığınları Tuzo. Yeni bir sınıf oluşturdum, UnityWebApiActivator sınıfına RegisterFilterProviders yöntemini ekledim ve yeni sınıf için ad alanı ekledim. Bu hata üretilir 'System.Collections.Generic.IEnumerable' 'ToList' için bir tanım içermez ve 'System.Collections türünün ilk argümanını kabul eden' ToList 'uzantı yöntemi yok .Generic.IEnumerable 'bulunamadı (bir yönerge veya bir montaj başvurusu kullanarak eksik misiniz?). Eklemem gereken başka ad alanları var mı? –
@MichaelS: 'ToList()' 'System.Linq' içinde bir uzantı yöntemidir. Bu derleme hatasını gidermek için dosyanızın üstüne System.Linq; 'kullanarak ekleyin. –
Teşekkürler iyi çalıştı. Bazı sebeplerden dolayı sağ tıkladığımda "Resolve" seçeneği yoktu. –