سؤال

ما هي الطريقة المقترحة للحصول على حاوية AUTOFAC من داخل فئة في التطبيق؟ هل يوفر Autofac حل خاصية Icontainer في الفصل أو هل أحتاج إلى تخزين الحاوية على مستوى العالم بمجرد أن أقوم ببنائها؟

هل كانت مفيدة؟

المحلول

انك سوف تحتاج IComponentContext أو ILifetimeScope لمعظم الأغراض. يتم توفيرها تلقائيًا بواسطة Autofac ، لذلك كل ما عليك فعله هو أخذ (مُنشئ) التبعية على أحدها وسيتم حقن المثيل الحالي.

توفر كلتا الواجهات المعيار Resolve() العمليات ، بينما ILifetimeScope يمتد IComponentContext عن طريق إضافة طرق لبدء حياة متداخلة جديدة.

المكونات التي ترغب في استخدام خدمات الحاوية للوصول إلى المكونات الأخرى تحتاج إلى القيام بذلك في نطاقها الخاص ، وليس "العالمي" IContainer, ، بحيث يمكن إرجاع المثيل الصحيح. على سبيل المثال ضمن طلب HTTP ، تم حقنه IComponentContext أو ILifetimeScope سيكون الشخص للطلب الحالي.

يمكن أيضًا التغلب على معظم المشكلات التي تتطلب سياقًا محقنًا (في كثير من الأحيان أكثر أناقة) باستخدام أنواع العلاقات - راجع: http://autofac.readthedocs.org/en/latest/resolve/relationships.html.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top