ধারক নির্মিত হওয়ার পরে পরিষেবা যুক্ত করা


89

রান-টাইমে কোনও পরিষেবা নিবন্ধন করা সম্ভব, অর্থ নির্মিত হওয়ার পরে এবং ContainerBuilderতৈরি হওয়ার পরে Container(এবং ContainerBuilderতা নিষ্পত্তি করা) অর্থ?


বর্তমানে, সেরা অনুশীলনগুলি অটোফ্যাকের পাত্রে অপরিবর্তনীয়
অ্যাডি

উত্তর:


96

হ্যাঁ আপনি এই Updateপদ্ধতিটি ব্যবহার করে করতে পারেন ContainerBuilder:

var newBuilder = new ContainerBuilder();
newBuilder.Register...;

newBuilder.Update(existingContainer);

4
মনে রাখবেন যে ইতিমধ্যে সমাধানের জন্য ব্যবহৃত একটি বিদ্যমান ধারককে আপডেট করার ফলে নির্বিচারত আচরণের ফলস্বরূপ হতে পারে। উদাহরণস্বরূপ, ইতিমধ্যে সমাধান হওয়া সিলেটলেটগুলির নির্ভরতা এমন উপাদানগুলি প্রতিস্থাপনের ফলে মূল উপাদানটি রেফারেন্সে থাকতে পারে।
স্টিভেন

13
আপডেটটি হ্রাস করা হচ্ছে github.com/autofac/Autofac/issues/811
চেজ ফ্লোরেল

20

যেহেতু কনটেইনার বিল্ডার। আপডেটটি অবমূল্যায়ন করা হয়েছে, তাই নতুন পরামর্শটি হ'ল শিশুদের আজীবন সুযোগ ব্যবহার করুন।

একটি লাইফটাইম স্কোপে নিবন্ধগুলি যুক্ত করা

আপনি আজীবন স্কোপগুলি তৈরি করার সাথে অটোফ্যাক আপনাকে "ফ্লাইতে" নিবন্ধগুলি জুড়তে দেয়। এটি আপনাকে সহায়তা করতে পারে যখন আপনাকে "স্পট ওয়েল্ড" সীমাবদ্ধ রেজিস্ট্রেশন ওভাররাইড করার প্রয়োজন হয় বা যদি আপনার সাধারণত এমন একটি সুযোগে কিছু অতিরিক্ত জিনিস প্রয়োজন হয় যা আপনি বিশ্বব্যাপী নিবন্ধন করতে চান না। আপনি বিগিনলাইফটাইমস্কোপ () -এ একটি ল্যাম্বডা পাস করে এটি করেন যা একটি কনটেইনারবিল্ডার নেয় এবং নিবন্ধগুলি যুক্ত করে।

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.
}

লাইফটাইম স্কোপস নিয়ে কাজ করা


লক্ষ্য করার মতো বিষয়টি হ'ল ইউজিং ব্লকের মন্তব্য। "অতিরিক্ত নিবন্ধগুলি কেবলমাত্র এই জীবনকালীন সুযোগে উপলব্ধ থাকবে।"
অ্যাডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.