![](/img/trans.png)
[英]Unity equivalent for Ninject's Bind.ToMethod of IPrincipal,IIdentity
[英]Configure Ninject to Resolve null when using ToMethod
如何配置Ninject以使用構造函數注入來解析null
? 我正在使用ToMethod
工廠方法和InTransientScope
。 如果不滿足某些條件,我的工廠將返回null
。 但是,Ninject會拋出異常,迫使我使用無參數構造函數,我想避免這種情況。
我這樣綁定:
Bind<IClient>
.ToMethod(x => someFactoryMethod())
.InTransientScope();
someFactoryMethod()
可能返回IClient
或null
。
我希望注入的類能夠傳入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.