क्या रन-टाइम पर एक सेवा को पंजीकृत करना संभव है, जिसका ContainerBuilder
निर्माण होने के बाद अर्थ बनाया गया है और बनाया Container
गया है (और ContainerBuilder
निपटान किया गया है)?
जवाबों:
हां, आप इस Update
पद्धति का उपयोग कर सकते हैं ContainerBuilder
:
var newBuilder = new ContainerBuilder();
newBuilder.Register...;
newBuilder.Update(existingContainer);
चूंकि कंटेनरबुर्टल.उपडेट को पदावनत कर दिया गया है, इसलिए नई सिफारिश बाल जीवनकाल के दायरे का उपयोग करने के लिए है।
एक लाइफटाइम स्कोप में पंजीकरण जोड़ना
जैसे ही आप आजीवन स्कोप बनाते हैं ऑटोफैक आपको "फ्लाई पर" पंजीकरण जोड़ने की अनुमति देता है। जब आपको "स्पॉट वेल्ड" सीमित पंजीकरण ओवरराइड करने की आवश्यकता होती है या अगर आपको आम तौर पर बस कुछ अतिरिक्त सामान की आवश्यकता होती है तो आप इसमें मदद कर सकते हैं। आप एक लैम्बडा को BeginLifetimeScope () में पारित करके ऐसा करते हैं जो एक कंटेनरबर्स्ट लेता है और पंजीकरण जोड़ता है।
using(var scope = container.BeginLifetimeScope(
builder =>
{
builder.RegisterType<Override>().As<IService>();
builder.RegisterModule<MyModule>();
}))
{
// The additional registrations will be available
// only in this lifetime scope.
}