2012-08-13 52 views
3

有沒有辦法用autofac返回null?如果我這樣做,我會得到一個例外。如何在Autofac註冊中返回NULL?

在某些情況下,我不能解析一個對象,應該返回null。

m_builder.Register <IMyObject> ((c, p) => { 
    //do something 

    if (...) { 
    //cant create/resolve object (error case) 
    return null; 
    } else { 
    return new IMyObject(); 
    } 

}).InstancePerHttpRequest(); 

是否有一個內置的方式來做到這一點與autofac?

編輯: 我想返回null。或者做其他事情來通知用戶創作不成功。如果我返回null這將引發異常:

DependencyResolutionException:

登記打造 'IMyObject' 的情況下,委託返回 空。

堆棧跟蹤:

在Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext 上下文,IEnumerable的參數)
在Autofac.Core.Resolving.InstanceLookup.b__0( )
在Autofac.Core.Lifetime.LifetimeScope.GetOrCreateAndShare(GUID ID, Func鍵1 creator)
at Autofac.Core.Resolving.InstanceLookup.Execute() at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, IComponentRegistration registration, IEnumerable
1參數)
在Autofac.Core.Resolving.Res olveOperation.Execute(IComponentRegistration 註冊,IEnumerable的1 parameters)
at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(IComponentRegistration registration, IEnumerable
1參數)
在Autofac.ResolutionExtensions.TryResolveService(IComponentContext 上下文中,服務服務,IEnumerable的1 parameters, Object& instance) at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable 1參數)
在Autofac.ResolutionExtensions.Resolve [TService](IComponentContext 上下文中, IEnumerable`1參數)
在Autofac.ResolutionExtensions.Resolve [TService](IComponentContext 上下文中,參數[]參數)
在RestApi.Controllers.MyApiController.CreateEntityContext()在 C:...

+0

什麼是異常消息,內部異常,堆棧跟蹤? – nemesv 2012-08-13 10:27:03

回答

3

AFAIK,在註冊中返回NULL將始終引發異常。有關如何處理該問題的一些想法,請查看this answer