繁体   English   中英

使用命名注册解析实例不会引发异常

[英]Resolve instance using named registration does not throw Exception

我以为我对Unity有很多了解,但是以下情况我并非没有。 我正在使用Unity Container将我对Prism的视图注册为具有命名注册的对象,如下所示:

_unityContainer.RegisterType<object, MyDummyView>("MyDummyViewName");

我通过调用请求视图的实例

object view = _unityContainer.Resolve<object>("MyDummyViewName");

到现在为止还挺好。 现在,我在系统中发现一个错误,原因是我使用了错误的名称来解析视图的实例,并且我期望Unity会引发异常。

object view = _unityContainer.Resolve<object>("MyWrongDummyViewName");

但是Unity不会引发任何异常(例如ResolutionFailedExceptionActivationException )。 当我进行上述调用时,它返回一个新object ,而没有使用给定(错误)名称注册任何视图。

这是Unity的正确行为吗? 我真的希望在这里得到一个例外。 在Prism的范围内,这是一个问题,因为导航到错误的目标(视图)时我不会遇到任何异常。

我与你在一起,这是意外行为。 我认为问题源于您试图解析具体类的实例(在您的情况下为object )的事实。 看起来Unity总是会尝试解析该实例。 只要能够做到,它将忽略命名映射。

我尝试了一个基类( ViewBase ),除非您将其声明为abstract否则容器也将解析该基类。 这样做会引发预期的异常。

如果您引入了可以解决问题的接口或抽象基类。

您应该为Unity打开一个故障单

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM