autofacの依存関係の解決に問題があります。これは、タイプの共分散と逆分散に関連している可能性があります。
次のプログラムは 0, 1 を返します。これは、resolve の 2 つの呼び出しが同じ型を返さないことを意味します (ただし、型を取得するのは同じオブジェクトです)。(違いは、var の静的型が異なることです。ランタイム型を使用する方法はありますか?)
ありがとう
IContainer _container;
void Main()
{
var builder = new ContainerBuilder();
builder.RegisterType<AHandler>().As<IHandler<A>>();
_container = builder.Build();
IBase a = new A();
Console.WriteLine(Resolve(a));
A b = new A();
Console.WriteLine(Resolve(b));
}
int Resolve<T>(T a) where T:IBase
{
return _container.Resolve<IEnumerable<IHandler<T>>>().Count();
}
// Define other methods and classes here
interface IBase{}
interface IHandler<T> where T:IBase {}
class A : IBase{}
class AHandler : IHandler<A>{}