Dot-Net
使用 ToMethod 時配置 Ninject 以解決 null
如何配置 Ninject 以
null通過建構子注入來解決?我正在使用ToMethod工廠方法和InTransientScope.null如果某些事情沒有滿足,我的工廠設計為返回。然而,Ninject 拋出一個異常,迫使我使用無參數建構子,我想避免這種情況。我是這樣綁定的:
Bind<IClient> .ToMethod(x => someFactoryMethod()) .InTransientScope();
someFactoryMethod()可能返回IClient或null。我希望注入的類能夠
null傳入而不是異常。當我使用時,當我嘗試解決它時TryGet,我會進入我的注入類。null我正在使用最新的 Ninject for .Net 4.0。
防止
null作為特例使用。嘗試改用空對像模式。這可以防止您使用空檢查來污染您的程式碼庫:Bind<IClient> .ToMethod(x => someFactoryMethod() ?? NullClient.Instance) .InTransientScope(); // Null Object implementation of IClient public class NullClient : IClient { public static readonly IClient Instance = new NullClient(); // Implement the members of IClient to do nothing. public void ClientOperation() { // noop. } }
您必須配置允許 null 。目前我手頭沒有原始碼,但它應該類似於以下內容:
new StandardKernel(new NinjectSettings { AllowNullInjection = true });