public interface ITaskProvider
{
T GetTask<T>();
}
नीचे ITaskprovider के कार्यान्वयन में, आप देख के रूप में IUserTask और IIdentityTask के बजाय संपत्ति निर्माता से इंजेक्शन की जा रही है। कारण यह है कि विंडसर स्वचालित रूप से इंजेक्शन गुणों को को रनटाइम पर तुरंत चलाता है ताकि मुझे सभी इंजेक्शन निर्भरताओं को कन्स्ट्रक्टर में रखना न पड़े।निर्भरता इंजेक्शन
public class TaskProvider : ITaskProvider
{
public IUserTasks UserTasks { get; set; }
public IIdentityTasks IdentityTasks { get; set; }
public T GetTask<T>()
{
Type type = typeof(T);
if (type == typeof(IUserTasks)) return (T)this.UserTasks;
if (type == typeof(IIdentityTasks)) return (T)this.IdentityTasks;
return default(T);
}
}
नियंत्रक में मैं कन्स्ट्रक्टर में आईटास्कप्रोवाइडर इंजेक्शन कर रहा हूं।
public ITaskProvider TaskProvider { get; set; }
public AuctionsController(ITaskProvider taskProvider)
{
TaskProvider = taskProvider;
}
और यहां मैं टास्कप्रोवाइडर और इसकी विधियों को ठीक कहता हूं।
public ActionResult Index()
{
var userTasks = TaskProvider.GetTask<IUserTasks>();
var user = userTasks.FindbyId(guid);
}
यहां तक कि सब कुछ ठीक काम करता है।
मुझे बताया गया है कि यह एक सेवा लोकेटर पैटर्न की तरह है और निर्भरता इंजेक्शन पैटर्न का उल्लंघन कर रहा है और मैं जानना चाहता हूं कि यहां क्या उल्लंघन हो रहा है।
इस उपयोगी सामान के लिए धन्यवाद। – Murat