function返回非null值,但在赋值时为null

时间:2014-01-31 10:11:41

标签: c# unity-container nullreferenceexception

在这一行

var factory = _compositionRoot.Resolve(desiredType)
                    as IItemLocatorFactory<IMyEntity, ILocatorViewModelItem<IMyEntity>>;

我将desiredType传递给以下方法,该方法使用Unity解决它:

public object Resolve(Type type)
    {
        var result = _container.Resolve(type);
                return result;
    }

被调用者中的result不为空。但是,调用者中的factory在赋值后为空,并且抛出NullReferenceException。我没有使用任何async方法。 _compositionRoot是在同一程序集中声明的公共类。

为什么我会失去回报值?

编辑我在CompositionRoot类中有这一行可能是相关的:

_container.RegisterInstance<ICompositionRoot>(this);

始终返回ICompositionRoot的同一个实例,即此公共CompositionRoot类的实例。

1 个答案:

答案 0 :(得分:1)

您正在使用as关键字,which will return null on failure.修正您正在使用的类型广告,并且它会正常工作。