關於構造函數注入Unity的建議做法是什麼? 接下來的兩個例子是從DI的角度來看更好的做法嗎?有更好的解決方案嗎?Unity - 構造函數注入的依賴屬性或接口繼承
(這些例子都是簡單的插圖)
public interface ICircle
{
double Radius{get;set;}
}
Container.RegisterType<ICircle, SmallCircle>("Small");
Container.RegisterType<ICircle, BigCircle>("Big");
public class Bike{
Public Bike([Dependency("Big") ICircle bigCircle, Dependency("Small") ICircle smallCircle) { }
}
還是這個,更多的強類型的解決方案......
public interface IBigCircle : ICircle
{
// **Empty interface**
}
Container.RegisterType<ICircle, SmallCircle>();
Container.RegisterType<IBigCircle, BigCircle>();
public class Bike{
Public Bike(IBigCircle bigCircle, ICircle smallCircle) { }
}
我擔心的是空的接口,這個數字可以通過在時長第二個解決方案。
第一種方法是不好的,因爲它讓你的類知道他們將接收哪些實現。第二種方法是嘗試解決這個問題。我建議你在有多個相同接口的實現時使用[Pure DI](http://blog.ploeh.dk/2014/06/10/pure-di/)。有關相關討論,請參見[本文](http://yacoubsoftware.blogspot.com/2015/08/why-di-containers-fail-with-complex.html)。 –