名前付き/キー解決によっても、名前を使用して子依存性が解決されますか?名前解決は、子依存関係のない解決された型に対してのみ名前/キーを適用しますか?オートファック。ネーミングの解決と子依存性
エラーが発生します。タイプの「Autofac.Core.Activators.Reflection.DefaultConstructorFinder」「ConsoleApplication1.Program + MainClassOne」で見つかったコンストラクタの
なし利用可能なサービスやパラメータを使用して起動することはできない。 コンストラクタ 'Void .ctor(INamed)'のパラメータ 'INamed named'を解決できません。
class Program
{
static void Main(string[] args)
{
var container = new ContainerBuilder();
container.RegisterType<NamedB>().Named<INamed>("B");
container.RegisterType<NamedA>().Named<INamed>("A");
container.RegisterType<MainClassOne>().Named<MainClassOne>("A");
container.RegisterType<MainClassTwo>().Named<MainClassTwo>("B");
var di = container.Build();
var a = di.ResolveNamed<MainClassTwo>("B");
var a2 = di.ResolveNamed<MainClassOne>("A");
}
public class MainClassOne
{
public MainClassOne(INamed named)
{
Console.WriteLine("MainClassOne= " + named.Name);
}
}
public class MainClassTwo
{
public MainClassTwo(INamed named)
{
Console.WriteLine("MainClassTwo= " + named.Name);
}
}
public interface INamed
{
string Name { get; set; }
}
public class NamedA : INamed
{
public string Name
{
get { return "A"; }
set { }
}
}
public class NamedB : INamed
{
public string Name
{
get { return "B"; }
set { }
}
}
}
悲しいですが、解決されたタイプの場合にしか見えません。私は "WithParameter"とそれが特定のクラスのためだけに働いているかどうかチェックします。私はそのautofac policityと思います。彼らは子供の依存関係に広がるためのパラメータを作ることができますが、 –