15

ASP.Net MVC uygulamasında kullanıcıları Yetkilendirmek için bir Özel Eylem Filtresi uyguladım. aşağıdaki gibiCastle Windsor'u kullanarak CustomAttribute'e bağımlılığı enjekte etme

Ben denetleyicilerin tüm içine bağımlılık enjeksiyon sağlamak için CastleWindsor kullanın:

protected virtual IWindsorContainer InitializeServiceLocator() 
    { 
     IWindsorContainer container = new WindsorContainer(); 
     ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(container)); 

     container.RegisterControllers(typeof(HomeController).Assembly); 
     ComponentRegistrar.AddComponentsTo(container); 

     ServiceLocator.SetLocatorProvider(() => new WindsorServiceLocator(container)); 

     return container; 
    } 

benim CustomAttribute içinde, ancak ben kullanıcı Oluşturucu alamıyorum, benim denetleyicilerin herkes tarafından kullanılan bir bağımlılık gerek bir öznitelik tabanlı enjeksiyon.

Peki buradaki en temiz yol nedir? Bağımlılığı nasıl sağlayabilirim?

+7

Özniteliklere davranış koymayın ... –

+0

olası yinelemesi [Windsor'u ActionFilterAttributes içine bağımlılıkları enjekte etmek için nasıl kullanırım?] (Http://stackoverflow.com/questions/553330/how-do-i-use- windsor-to-inject-bağımlılıkları-içine-actionfilterattributes) – BonyT

+0

IMHO en iyi yanıtı burada http://stackoverflow.com/questions/10708565/asp-net-mvc-ifilterprovider-and-separation-of-concerns (ve bu söz konusu olduğu kendisi - çok iyi bir örnek (ipucu: 'IFilterProvider')). –

cevap

1

Yapamazsınız. Öznitelikler meta verilerdir. Onlara davranış koymak yanlıştır. Bağımlılıkları koymak daha da kötüdür.

hangi davranışı uygular ve başka yerlerde davranışı uygulamak istediğiniz nesneleri göstermek için işaretleyici özelliği kullanın. MVC yılında

başka yerde genellikle ihtiyacınız davranış sağlamak için özelliğindeki verileri kullanan özel eylem invoker anlamına gelir.

+2

Tamam - Lütfen sonra ne yaptığımı ve bu yazı arasındaki farkı açıklayın: http://www.asp.net/mvc/tutorials/understanding-action-filters-vb – BonyT

+18

Ayrıca - bu cevap gerçekten herhangi bir tür vermeden eleştiri sağlar Çözüm ... "başka yerde?" Lütfen açık ol. Birçok denetleyicide uygulama boyunca geçerli olan ve bağımlılık gerektiren yetkilendirmeyi nasıl uygularsınız? – BonyT

+0

Downvote'u büyük bir şişmanlıkla reddetmek zorunda kaldım. Bir resim bin kelimeden fazla diyor. – Steven

İlgili konular