बस किसी के इच्छुक होने पर, मैंने एक विस्तार विधि बनाई है जो ParameterOverride
का उपयोग करने के लिए थोड़ा आसान पढ़ने के लिए सिंटैक्स बनाता है। विधि इस प्रकार है:
public static class UnityExtensions
{
public static T Resolve<T>(this IUnityContainer container, object parameterOverrides)
{
var properties = parameterOverrides
.GetType()
.GetProperties(BindingFlags.Public | BindingFlags.Instance);
var overridesArray = properties
.Select(p => new ParameterOverride(p.Name, p.GetValue(parameterOverrides, null)))
.Cast<ResolverOverride>()
.ToArray();
return container.Resolve<T>(null, overridesArray); //null needed to avoid a StackOverflow :)
}
}
इस के साथ
, इस प्रकार आप ParameterOverride उदाहरण पुनर्लेखन कर सकते हैं:
var service = container.Resolve<IConcreteService>(new {val=3});
मुझे आशा है कि यह किसी के लिए उपयोगी है ...
एक शानदार उत्तर के लिए धन्यवाद। +1 – Vadim
यह एक बहुत बड़ी मदद थी। बहुत अच्छी तरह से समझाया। –
+1 बिल्कुल सही स्पष्टीकरण! –