存在一个无参数的ctor,但在解析时统一到另一个
本文关键字:另一个 ctor 一个 参数 存在 | 更新日期: 2023-09-27 18:26:40
我在时得到以下错误
mConsumerTokenManager = (IConsumerTokenManager)container.Resolve(typeof(IConsumerTokenManager), null);
即使我有
public class InMemoryTokenManager : IConsumerTokenManager, IOpenIdOAuthTokenManager
{
private Dictionary<string, string> tokensAndSecrets = new Dictionary<string, string>();
public InMemoryTokenManager(){}
/// <summary>
/// Initializes a new instance of the <see cref="Ugi.Server.Authentication.Consumers.InMemoryTokenManager"/> class.
/// </summary>
/// <param name="consumerKey">The consumer key.</param>
/// <param name="consumerSecret">The consumer secret.</param>
public InMemoryTokenManager(string consumerKey, string consumerSecret)
{
if (String.IsNullOrEmpty(consumerKey))
{
throw new ArgumentNullException("consumerKey");
}
this.ConsumerKey = consumerKey;
this.ConsumerSecret = consumerSecret;
}
Resolution of the dependency failed, type = "DotNetOpenAuth.OAuth.ChannelElements.IConsumerTokenManager", name =
"(无)"。解析时发生异常。异常为:InvalidOperationException-无法构造类型String。必须配置容器才能提供此值。-----------------------------------------------发生异常时,容器为:
Resolving Ugi.Server.Authentication.Consumers.InMemoryTokenManager,(none)
(映射自DotNetOpenAuth.OAuth.ChannelElements.IConsumerTokenManager,(无))正在解析构造函数Ugi.Server.Authentication.Consumers.InMemoryTokenManager(System.String)的参数"consumerKey"consumerKey,System.String consumerSecret)解析系统字符串,(无)
当一个目标类包含多个构造函数时,Unity将使用应用了InjectionConstructor属性的构造函数。如果有多个构造函数,并且没有一个构造函数携带InjectionConstructor属性,Unity将使用具有参数最多。如果有多个这样的构造函数(更多比具有相同参数数量的"最长"之一),Unity将引发异常。
您可以在注册期间使用以下代码来告诉Unity要使用哪个构造函数:
this.container.RegisterType<IConsumerTokenManager, InMemoryTokenManager>(new InjectionConstructor());