0

コンストラクターに挿入された別のオープン ジェネリックおよびプリミティブにオープン ジェネリック型を登録するにはどうすればよいですか?
以下の例を参照してください。
この例では、Resolve は「パラメーター "connectionString" として文字列を解決できません」という例外をスローしています。(ここでライブコードを確認できます)

using System;
using DryIoc;

public class Program
{
    public static void Main()
    {
        var container = new Container();

        container.RegisterInstance("some_connection_string", serviceKey: "connectionString");
        container.Register(typeof(Configuration<>), Reuse.Singleton);
        container.Register(typeof (IEntityUpdater<>), typeof (SqlEntityUpdater<>), Reuse.Singleton);

        var p = container.Resolve<IEntityUpdater<EventArgs>>();

        Console.WriteLine(p);
    }   
}

public class Configuration<T> where T : class { }


internal interface IEntityUpdater<in T> where T : class
{
    void Update(T entity);
}

internal class SqlEntityUpdater<T> : IEntityUpdater<T> where T : class
{
    public SqlEntityUpdater(Configuration<T> configuration, string connectionString)
    {
    }

    public void Update(T entity) { }
}
4

1 に答える 1