当使用unity时,如果我尝试注入一个我没有明确注册容器的具体类型,unity会尝试找到当前类型并为我实例化一个新类型,然后将它注入依赖于它的类中它。
如何确保只使用此类型的单个实例?我是否需要事先在容器中明确注册实例?
答案 0 :(得分:2)
来自MSDN:
您可以使用Unity容器生成具有公共构造函数的任何对象的实例(换句话说,您可以使用new运算符创建的对象),而无需使用容器注册该类型的映射。当您调用Resolve方法并指定未注册的类型的默认实例时,容器只是调用该类型的构造函数并返回结果。
简单地说,是,您必须为您的类型注册一个映射,才能在您的应用中将其用作单例。您可以使用RegisterInstance
方法或RegisterType
并将ContainerControlledLifetimeManager
作为终身经理来实现。