存在一个无参数的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)解析系统字符串,(无)

存在一个无参数的ctor,但在解析时统一到另一个

当一个目标类包含多个构造函数时,Unity将使用应用了InjectionConstructor属性的构造函数。如果有多个构造函数,并且没有一个构造函数携带InjectionConstructor属性,Unity将使用具有参数最多。如果有多个这样的构造函数(更多比具有相同参数数量的"最长"之一),Unity将引发异常。

您可以在注册期间使用以下代码来告诉Unity要使用哪个构造函数:

this.container.RegisterType<IConsumerTokenManager, InMemoryTokenManager>(new InjectionConstructor());