「Autofacは、コンテナーから取得できるパラメーターが最も多いコンストラクターを自動的に選択します。」それ以外の方法で実行し、代わりにデフォルトのコンストラクターを選択したいと思います。http://code.google.com/p/autofac/wiki/Autowiring
internal class ParameterlessConstructorSelector : IConstructorSelector
{
#region Implementation of IConstructorSelector
/// <summary>
/// Selects the best constructor from the available constructors.
/// </summary>
/// <param name="constructorBindings">Available constructors.</param>
/// <returns>
/// The best constructor.
/// </returns>
public ConstructorParameterBinding SelectConstructorBinding(ConstructorParameterBinding[] constructorBindings)
{
return constructorBindings.First();
}
#endregion
}
クラスを配線するとき、私はこれを行いました:
builder.RegisterType<EmployeeFactory>()
.As<IEmployeeFactory>().UsingConstructor(new ParameterlessConstructorSelector())
.SingleInstance();
ConstructorBindingsリストの最初のバインディングは、常にパラメーターなしのコンストラクターを持つものです。それが最初に定義されたのか、autofacがコンストラクターをスキャンする方法なのかはわかりませんが、これはパラメーターなしのコンストラクターを配線するための正しいアプローチですか?
ありがとう