簡體   English   中英

使用ToMethod時配置Ninject以解析null

[英]Configure Ninject to Resolve null when using ToMethod

如何配置Ninject以使用構造函數注入來解析null 我正在使用ToMethod工廠方法和InTransientScope 如果不滿足某些條件,我的工廠將返回null 但是,Ninject會拋出異常,迫使我使用無參數構造函數,我想避免這種情況。

我這樣綁定:

Bind<IClient>
    .ToMethod(x => someFactoryMethod())
    .InTransientScope();

someFactoryMethod()可能返回IClientnull

我希望注入的類能夠傳入null而不是異常。 當我使用TryGet ,當我嘗試解決它時,我在注入的類中得到null

我正在使用最新的Ninject for .Net 4.0。

您必須配置允許null。 我目前沒有源代碼,但它應該類似於以下內容:

new StandardKernel(new NinjectSettings { AllowNullInjection = true });

防止使用null作為特例。 請嘗試使用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.
    }
}

您可以使用Optional屬性標記構造函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM