আমি এই সমস্যাটি সমাধান করছি: নির্ভরতার কারখানাগুলি ইনজেকশনের জন্য। এই কারখানাগুলিতে, কনটেইনারটিতে নিবন্ধিত হওয়ার সাথে সাথে প্রথমে নির্ভরতা সমাধান করুন, তারপরে অবশিষ্ট সমস্ত ডেটা "ডিসরিয়ালাইজিং" করুন: json.net বিদ্যমান অবজেক্টে ক্ষেত্রগুলি পপুলেট করতে দেয়।
আইওসি পাত্রে ওয়্যারিং কোডের সাথে কারখানাগুলির কোডটি চলে যায় বলে আমি মনে করি না container.Resolve
কারখানার অভ্যন্তরে ব্যবহার করা নিয়ম লঙ্ঘন করে, যা container
কোডের এক জায়গায় ব্যবহার করতে হবে: যেখানে সমস্ত তারের ঘটনা ঘটে।
এখন পর্যন্ত, আমি প্রতিবিম্বটি ব্যবহার করে এই প্রক্রিয়াটি স্বয়ংক্রিয়ভাবে তৈরি করার চেষ্টা করছি (আমি যে পদ্ধতির পরীক্ষা করেছি তার বিপরীতে)। হ্যাঁ, json.net ডিসেরায়ালাইজেশন থেকে যা কিছু অবশিষ্ট থাকে তা নেই, এর কিছু অংশ কাস্টম কোড দ্বারা প্রতিস্থাপিত হয়, তবে আমার মনে হয় কেন বিরক্ত হয়।
এছাড়াও, বিষয়টি সম্পর্কে আপনার চূড়ান্ত চিন্তাভাবনা / সিদ্ধান্ত কী ছিল? এই পোস্টটি পড়ার পরে আমি দুটি উপায় দেখতে পাচ্ছি: ডিসেরায়ালাইজ করুন, তারপরে ইনজেকশন করুন; বা ইনজেকশন দিন, তারপরে ডিসরিয়ালাইজ করুন (জনবসতি করুন)। এবং আমি এখনও আমার উপায় আরও ভাল খুঁজে। এর বিরোধিতা করে যুক্তি শুনে খুশি হবেন (আমি সম্পর্কিত, আমার ক্ষেত্রে আমার উপায়টি আরও ভাল হতে পারে তবে ভাল বিকল্প কেসগুলি স্পষ্টতই কল্পনা করতে পারে না, যেখানে এটি ব্যর্থ হয়, কিছু ছোটখাট অনুমান)
This would eliminate the possibility of using Constructor injected DI
- কেন? আপনার এখনও প্যারামিটারাইজড ইন্সট্রাক্টর থাকতে পারে, যতক্ষণ আপনি সিরিয়ালাইজেশনের উদ্দেশ্যে ডিফল্ট কনস্ট্রাক্টর অন্তর্ভুক্ত করেন (যদি আপনি পছন্দ করেন তবে ডিফল্ট কনস্ট্রাক্টর ব্যক্তিগত হতে পারে)।