Search code examples
c#.netunity-container

No member matching data has been found - Registering Dictionary in Unity Container


I'm attempting to be able to use multiple db connections in different repositories and am following this answer.

I am on .NET Framework 4.8 so things are a little different but everything has been mostly the same. The issue I'm running into is when I try to create a new dictionary in UnityConfig.cs.

The following code is throwing the error, specifically on the line where I'm attempting to register the dictionary.

var connectionDict = new Dictionary<DatabaseConnectionName, string>
{
    { DatabaseConnectionName.Connection1, ConfigurationManager.ConnectionStrings["Connection1"].ConnectionString },
    { DatabaseConnectionName.Connection2, Configurationmanager.ConnectionStrings["Connection2"].ConnectionString }
};

container.RegisterType<IDictionary<DatabaseConnectionName, string>>(new InjectionConstructor(connectionDict));
container.RegisterType<IDbConnectionFactory, DapperDbConnectionFactory>();

ERROR: System.ArgumentException: No member matching data has been found.

I'm assuming it's a silly mistake but I just can't figure it out. Any help would be greatly appreciated.


Solution

  • Sometimes you just have to post to SO to solve your own problems lol.

    I changed

    container.RegisterType<IDictionary<DatabaseConnectionName, string>>(new InjectionConstructor(connectionDict));
    

    to

    container.RegisterType<IDictionary<DatabaseConnectionName, string>, Dictionary<DatabaseConnectionName, string>>(new InjectionConstructor(connectionDict));
    

    and everything is working as expected now.