這個問題看起來很奇怪,但我們確實有這樣的情況,我們需要修復構造函數簽名。爲什麼沒有辦法在C#中約束構造函數的簽名?
例如,我希望它的解決DI的依賴關係。如果構造函數被擴展並需要更多的參數,其中一些依賴於上下文,我很麻煩。
當然,如果DI容器不能解決依賴關係,那麼它肯定會引發異常,但這並不是我想的最好的方式。
我只是重構我們的應用程序,並明白,最初計劃成爲DI的一個好候選者現在由於故意構造函數擴展而不理解後果而被破壞。阻止它的唯一方法就是開發人員之間的約定。
語言支持將非常有幫助,但C#和Java都沒有。
所以我認爲應該有一些原因,這個功能沒有實現...爲什麼?
這是我們廠的樣子:
public class EntityBase : IEntity
{
public EntityBase(IBusinessModel model, IAppContext context)
{
}
}
public class DescendatnEntity : EntityBase, IDescendatnEntity
{
public DescendatnEntity(IBusinessModel model, IAppContext context, ...additional params...)
{
}
}
public interface IEntitiesFactory
{
IEntity GetBaseEntity();
IDescendantEntity GetDescendantEntity(...those additional params...);
}
IBusinessModel
和IAppContext
單身,而另外PARAMS是短暫的。
如果只有調用者知道瞬態參數的值,那麼工廠就不需要知道這些參數。
如果將構造函數排成一行,那麼這些類最終會得到它們的依賴關係? – Jon 2013-02-19 19:34:42
你是什麼意思*固定構造函數簽名*? – 2013-02-19 19:34:42
聽起來像你只需要創建一個工廠類,可以用來創建你的類型。 – Servy 2013-02-19 19:36:19