ورود

View Full Version : استفاده از ninject در mvc



soroush.elec
دوشنبه 09 دی 1392, 03:24 صبح
بنده می خواستم dependency resolver ام در تمام پروژه mvc کار کند اما وقتی کلاس NinjectControllerFactory یا کلاس NinjectDependencyResolver را در پروژه اضافه کرده و در متد AddBindings بایندینگ را انجام می دهم . نمونه های ساخته شده برای اینترفیس ها فقط در کنترلر ها قابل دسترسی است . چکار کنم تا مثلا درون کلاس CustomHandleErrorAttribute که خودم به پروژه اضافه کرده ام نیز DI انجام شود.
با تشکر فراوان

hakim22
دوشنبه 09 دی 1392, 07:36 صبح
در مورد Attribute ها بهتر است بجای Constructor Injection از Property Injection استفاده کنید. در Ninject برای اینکار از اتریبوت با نام [Inject] استفاده میشود. این خاصیت را بالای هر Property از نوع public قرار دهید مقداری آن توسط Ninject پر میشود. (property با از یک Interface باشد)

soroush.elec
دوشنبه 09 دی 1392, 11:01 صبح
در مورد Attribute ها بهتر است بجای Constructor Injection از Property Injection استفاده کنید. در Ninject برای اینکار از اتریبوت با نام [Inject] استفاده میشود. این خاصیت را بالای هر Property از نوع public قرار دهید مقداری آن توسط Ninject پر میشود. (property با از یک Interface باشد)

مرسی از راهنماییتون. اینکار را کردم ولی inject نکرد . آیا بغیر از متد Add Binding در جای دیگری باید بایند کنم؟؟

hakim22
دوشنبه 09 دی 1392, 16:08 عصر
باید چنین کدی را در متد RegisterServices در فایل ninjectWebCommon.cs در App_Start قرار بدید.


kernerl.BindFilter<your_Atrribute_name>(FilterScope.Global,0)

YourName
دوشنبه 09 دی 1392, 18:12 عصر
این جا دقیقا مشکل شما با استفاده از الگوی Factory با مثال کاملا توضیح داده شده است (http://www.itnerd.ir/post/using-NinjectExtensionsFactory-when-validating-model-metadata)