我对Unity来说有些新鲜似乎很好,但我在使用时有点迷失 Unity中的ResolvedParameter。
用Google搜索并查看MSDN,但仍然无法理解何时使用它。
你有一个简单的例子可以说明它的使用。
非常感谢你的帮助
答案 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<> 相同,但看起来更简洁。