এটি অর্জনের সবচেয়ে সহজ এবং সর্বাধিক সঠিক উপায় হ'ল এএসপি.নেট কোর এর সমস্ত সংস্করণেIConfigureOptions<TOptions>
ইন্টারফেসটি বাস্তবায়ন করা । এই .NET কোর 1.0 যেহেতু হয়েছে প্রায় সময়, মনে হচ্ছে যে কয়েক মানুষ সম্পর্কে জানি এটা কিভাবে যে ঠিক কাজ ™ তোলে ।
উদাহরণস্বরূপ, আপনি একটি কাস্টম মডেল যাচাইকারকে যুক্ত করতে চান যা আপনার অ্যাপ্লিকেশনটির অন্যান্য পরিষেবার একটিতে নির্ভরতা রাখে। প্রাথমিকভাবে এটি অসম্ভব বলে মনে হচ্ছে - সমাধান করার কোনও উপায় নেই IMyServiceDependency
কারণ আপনার কোনও প্রবেশাধিকার নেই IServiceProvider
:
public class MyModelValidatorProvider : IModelValidatorProvider
{
public MyModelValidatorProvider(IMyServiceDependency dependency)
{
...
}
}
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers(options =>
{
options.ModelValidatorProviders.Add(new MyModelValidatorProvider(??????));
});
}
তবে "যাদু" IConfigureOptions<TOptions>
এটিকে এত সহজ করে তুলেছে:
public class ConfigureMvcOptions : IConfigureOptions<MvcOptions>
{
private IMyServiceDependency _dependency;
public MyMvcOptions(IMyServiceDependency dependency)
=> _dependency = dependency;
public void Configure(MvcOptions options)
=> options.ModelValidatorProviders.Add(new MyModelValidatorProvider(_dependency));
}
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
...
services.AddSingleton<IConfigureOptions<MvcOptions>, ConfigureMvcOptions>();
}
মূলত, আপনি যে Add***(***Options)
প্রতিনিধিদের মধ্যে উপস্থাপনাগুলি করতে পারেন তা ConfigureServices
এখন আপনার IConfigureOptions<TOptions>
শ্রেণীর Configure
পদ্ধতিতে স্থানান্তরিত । তারপরে আপনি বিকল্পগুলি একইভাবে নিবন্ধ করুন যেভাবে আপনি অন্য কোনও পরিষেবা নিবন্ধন করতে পারেন এবং আপনি চলে যান!
আরও বিশদ জন্য, পাশাপাশি পর্দার আড়ালে এটি কীভাবে কাজ করে সে সম্পর্কিত তথ্যের জন্য আমি আপনাকে সর্বদা-অসাধারণ অ্যান্ড্রু লকের কাছে উল্লেখ করি ।