के साथ डोमेन मॉडल कक्षाओं में निर्भरता इंजेक्शन देना मैं एक एएसपी.नेट एमवीसी एप्लीकेशन बना रहा हूं जो डीएचडी (डोमेन ड्राइव डिजाइन) दृष्टिकोण का उपयोग करता है जो एनएचबीर्नेट द्वारा संचालित डेटाबेस एक्सेस के साथ होता है। मैं डोमेन मॉडल वर्ग (प्रशासक) है कि मैं के माध्यम से में एक निर्भरता इंजेक्षन करना चाहते हैं एक आईओसी कंटेनर ऐसे महल विंडसर, कुछ इस तरह के रूप में: आईओसी बुला बिनानिबर्ननेट (एएसपी.नेट एमवीसी + आईओसी)
public class Administrator
{
public virtual int Id { get; set; }
//.. snip ..//
public virtual string HashedPassword { get; protected set; }
public void SetPassword(string plainTextPassword)
{
IHashingService hasher = IocContainer.Resolve<IHashingService>();
this.HashedPassword = hasher.Hash(plainTextPassword);
}
}
मैं मूल रूप से SetPassword विधि के लिए IHashingService इंजेक्षन करना चाहते हैं कंटेनर सीधे (क्योंकि यह एक आईओसी एंटी-पैटर्न होने का अनुमान है)। लेकिन मुझे यकीन नहीं है कि इसे करने के बारे में कैसे जाना है। मेरा प्रशासक ऑब्जेक्ट या तो new Administrator();
के माध्यम से तत्काल हो जाता है या यह NHibernate के माध्यम से लोड हो जाता है, तो मैं IHashingService को व्यवस्थापक वर्ग में कैसे इंजेक्ट करूँगा?
दूसरे विचारों पर, क्या मैं इस बारे में सही तरीके से जा रहा हूं? मैं अपने codebase से अटे पड़े होने से बचने के लिए उम्मीद कर रहा था ...
currentAdmin.Password = HashUtils.Hash(password, Algorithm.Sha512);
... और बदले डोमेन मॉडल ही हैशिंग का ख्याल रखना और बड़े करीने से इसे दूर संपुटित मिलता है। मैं एक और डेवलपर को गलती से गलत एल्गोरिदम चुनने और शा 512 के रूप में कुछ पासवर्ड और कुछ एमडी 5 के रूप में कुछ और कुछ अलग नमक आदि के साथ कुछ पासवर्ड रखने की कल्पना कर सकता हूं। इसके बजाए डेवलपर्स लिख रहे हैं ...
currentAdmin.SetPassword(password);
... तो वह उन विवरणों को दूर छुपाएगा और ऊपर सूचीबद्ध उन समस्याओं का ख्याल रखेगा?
इंटरसेप्टर दिलचस्प लगते हैं, मैं उन्हें आज़मा दूंगा, धन्यवाद! –