10

有没有办法用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 这个异常将被抛出:

依赖解析异常:

注册以创建“IMyObject”实例的委托返回 null。

堆栈跟踪:

在 Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable 1 参数) 在 Autofac.Core.Resolving.InstanceLookup.b__0() 在 Autofac.Core.Lifetime.LifetimeScope.GetOrCreateAndShare(Guid id, Func 1 参数) 在 Autofac.Core.Resolving.ResolveOperation.Execute(IComponentRegistration 注册,IEnumerable 1 参数) 在 Autofac.ResolutionExtensions.TryResolveService(IComponentContext 上下文,服务服务,IEnumerable 1 参数) 在 Autofac.ResolutionExtensions.Resolve[TService](IComponentContext 上下文,IEnumerable` 1个参数)1 parameters)
at Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable


1 creator)
at Autofac.Core.Resolving.InstanceLookup.Execute() at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, IComponentRegistration registration, IEnumerable

1 parameters)
at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(IComponentRegistration registration, IEnumerable

1 parameters, Object& instance) at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable

在 Autofac.ResolutionExtensions.Resolve[TService](IComponentContext context, Parameter[] parameters)
在 RestApi.Controllers.MyApiController.CreateEntityContext() 在 C:...

4

1 回答 1

7

AFAIK,在注册中返回 NULL 总是会引发异常。有关如何处理的一些想法,请查看此答案

于 2012-08-13T14:59:26.147 回答