Unity中的ResolvedParameter。有人可以解释何时使用它?

时间:2009-09-20 16:55:14

标签: unity-container

我对Unity来说有些新鲜似乎很好,但我在使用时有点迷失 Unity中的ResolvedParameter。

用Google搜索并查看MSDN,但仍然无法理解何时使用它。

你有一个简单的例子可以说明它的使用。

非常感谢你的帮助

3 个答案:

答案 0 :(得分:8)

您可能希望使用已解析服务的构造函数参数和字符串配置Type。在这种情况下,您将使用ResolvedParameter。

Container.RegisterType<IRepository, Repository>(
            new InjectionConstructor(
                    new ResolvedParameter<IClassifier>(), 
                        "ConnectionString"));

答案 1 :(得分:1)

用于注射方法;请参阅MSDN上的Entering Configuration Information。向下滚动到“动态配置构造函数,属性和方法注入”,并注意ResolvedParameter实际上是InjectionMethod构造函数的参数。

我从未遇到过使用它的需要。构造函数注入将解决95%的问题,而属性注入将解决其他5%。 (警告:我在几个项目中只使用了Unity,因此我并不认为自己是专家。)

答案 2 :(得分:0)

正如我所见,当您有一个构造函数时使用它,其中至少一个参数无法从容器中获取,而其余参数可以。在这种情况下,您可以在实际创建该类型的新实例时声明如何解析每个 ctor 参数。

Container.RegisterSingleton<IConnectionManager, ConnectionManager>(new InjectionConstructor(new ResolvedParameter<INetworkClientFactory>(), Container.Resolve<IBackoffAlgorithm>(), 10));

在我的示例中,IConnectionManager 实例从容器中获取第一个参数(通过 ResolvedParameter),通过 Container.Resolve<> 获取第二个参数,以及第三个参数是一个硬编码的整数。

ResolvedParameter 的行为应该与直接的 Container.Resolve<> 相同,但看起来更简洁。