سؤال

أقوم بإضافة Autofac إلى مشروع موجود وبعض تطبيقات الخدمة تتطلب استدعاء طريقة التهيئة الخاصة بها وإقرارها. حاليا أنا أستخدم الرمز:

builder.Register(context =>
                 {
                    var service = 
                         new SqlTaxRateProvider(context.Resolve<IUserProvider>());
                    service.Initialize(config);
                    return service;
                 }
).As<ITaxService>()
.SingleInstance();

ما الذي يعمل ، لكنني ما زلت أقوم بإنشاء الكائن بنفسي وهو ما أحاول الابتعاد عنه والسماح لـ Autofac بالتعامل معه من أجلي. هل من الممكن تكوين عملية إنشاء منشور من شأنها تنفيذ التهيئة المخصصة؟

لإعطائك فكرة عما أنا بعد ذلك ، سيكون هذا هو الكود:

builder.RegisterType<SqlTaxRateProvider>()
 .As<ITaxService>()
 .OnCreated(service=> service.Initialize(config))
 .SingleInstance();

تحديث: أنا أستخدم Autofac-2.1.10.754-Net35

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

المحلول

.OnActivating(e => e.Instance.Initialize(...))

يجب أن تفعل الخدعة.

يمكنك أيضًا التحقيق في الوحدة النمطية القابلة للبدء (انظر الدخول القابل للبدء في Autofac Wiki).

اقتراح مارك للقيام بالتهيئة في المنشئ هو أيضًا اقتراح جيد. في هذه الحالة استخدام

.WithParameter(new NamedParameter("config", config))

لدمج معلمة التكوين في تبعيات مُنشئ أخرى.

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