यदि आप .NET 4.0 का उपयोग कर रहे हैं तो आपके पास एमईएफ शामिल है।
.NET 2 के लिए मैंने एक बार इंटरफेस और प्रतिबिंब का उपयोग करके कुछ लिखा था। उस प्रक्रिया का वर्णन करने वाले बहुत सारे ट्यूटोरियल हैं। भले ही आप एमईएफ का उपयोग कर सकें, फिर भी कुछ प्रतिबिंब ट्यूटोरियल का प्रयास करने के लायक है, इस प्रकार एमईएफ नीचे काम करता है।
यह भी देखें this प्रश्न जो कुछ अच्छे उत्तरों हैं। TinyIoC इसकी एक एकल स्रोत फ़ाइल की तरह दिखता है।
public class Container
{
private readonly Dictionary<Type,Func<Container,object>> factories;
private readonly Dictionary<Type,object> cache;
public Container()
{
this.factories = new Dictionary<Type,Func<Container,object>>();
this.cache = new Dictionary<Type,object>();
}
public void Register<TContract>(Func<Container,TContract> factory)
{
// wrap in lambda which returns object instead of TContract
factories[typeof(TContract)] = c => factory(c);
}
public TContract Get<TContract>()
{
var contract = typeof(TContract);
if (!cache.ContainsKey(contract))
{
this.cache[contract] = this.factories[contract](this);
}
return (TContract)this.cache[contract];
}
}
जो तुम इस तरह का प्रयोग करेंगे::
var container = new Container();
container.Register<ICar>(c => new Car(
c.Get<IEngine>(), c.Get<IWheel>()));
container.Register<IWheel>(c => new Wheel());
container.Register<IEngine>(c => new Engine());
var car = container.Get<ICar>();
इससे भी अधिक minimalistic निर्भरता क्या करना होगा
आप अधिक सुझावों के लिए इस .NET को टैग करना चाहेंगे। –
इस प्रश्न को देखें: http://stackoverflow.com/questions/2515124/whats-the-simplest-ioc-container-for-c एक ऑनलाइन उदाहरण है –
यदि आप लाइब्रेरी लिख रहे हैं, तो आपको यह नहीं करना चाहिए एक डी कंटेनर का बिल्कुल उपयोग करें: http://stackoverflow.com/questions/2045904/dependency-inject-di-friendly-library/2047657#2047657 –