“Autofac自动选择能够从容器中获取的参数最多的构造函数。”我希望它做其他事情,而不是选择默认的构造函数。 http://code.google.com/p/autofac/wiki/AutowiringAutofac无参数构造函数选择
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列表绑定始终是一个与paremeterless构造。不知道它是第一次定义还是autofac扫描构造函数的方式,但是这是用于无参数构造函数的正确方法吗?
感谢
我知道我很幸运First():)感谢您的详细解释。 –
现在Autofac没有'InvalidOperationException',而是有一个'DependencyResolutionException'类,如果没有找到无参数的ctor就更合适。 – aholmes