, Okumayı biraz daha kolay ParameterOverride
kullanarak çözülmesi için sözdizimi yapar bir uzantısı yöntemi yaptık. Bununla
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 :)
}
}
aşağıdaki gibi ParameterOverride örneğini yeniden yazabilirsiniz, aşağıdaki gibidir: yöntemdir bu kimse için yararlı olacağını umuyoruz
var service = container.Resolve<IConcreteService>(new {val=3});
...
Harika bir yanıt için teşekkürler. +1 – Vadim
Bu çok yardımcı oldu. Çok iyi açıkladı. –
+1 Mükemmel bir açıklama! –