के लिए संपत्ति इंजेक्शन मैं अपने BaseController
कक्षा से प्राप्त किसी भी नियंत्रक पर स्वचालित रूप से एक संपत्ति सेट करने का प्रयास कर रहा हूं। मेरे Application_Start
विधि में कोड यहां दिया गया है। जब मैं कोशिश करता हूं और एक्सेस करता हूं तो UnitOfWork
संपत्ति हमेशा शून्य होती है।बेस कंट्रोलर क्लास
var builder = new ContainerBuilder();
builder.RegisterControllers(typeof(MvcApplication).Assembly);
builder.RegisterType<VesteraTechnologiesContext>().As<IContext>();
builder.RegisterType<UnitOfWork>().As<IUnitOfWork>();
builder.RegisterType<BaseController>()
.OnActivated(c => c.Instance.UnitOfWork = c.Context.Resolve<IUnitOfWork>());
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
यहाँ BaseController
public class BaseController : Controller
{
public IUnitOfWork UnitOfWork { get; set; }
}
कारण मैं एक संपत्ति के माध्यम से के बजाय पर एक निर्माता के माध्यम से ऐसा करने के लिए कोशिश कर रहा हूँ कैसा दिखता तो है कि मैं निर्माता नकल करने की जरूरत नहीं है है प्रत्येक नियंत्रक में UnitOfWork
संपत्ति तक पहुंच की आवश्यकता है, क्योंकि कन्स्ट्रक्टर विरासत में नहीं हैं।
धन्यवाद nemesv, यह पूरी तरह से काम किया। टिप के लिए –
@nemesv धन्यवाद। क्या आप जानते हैं कि अगर इसका कोई प्रभाव पड़ता है? – tugberk
@tugberk मैंने प्रोडक्ट्स का उपयोग नहीं किया है उत्पादन उत्पादन में उपयोग किया गया है, इसलिए मुझे नहीं पता कि इसका कितना प्रभाव पड़ता है। यह सार्वजनिक सेटटेबल गुणों को खोजने के लिए प्रतिबिंब का उपयोग करता है, इसलिए कम से कम सामान्य प्रतिबिंब लागत होती है। – nemesv