我对使用 Autofac 还是很陌生,并且对我正在使用的构造函数注入方法感到困扰。这是场景:
我目前有两个继承IForms
接口的类。每个类也有自己的接口
public interface IForms
{
long CreateNewForm(FormData data);
FormData RetrieveFormById(long id);
}
public interface IFormA : IForms
{ }
public interface IFormB : IForms
{ }
现在我有一个处理这个的类,如下所示:
public class ApplicationForms : IApplicationForms
{
private readonly IFormA _formA;
private readonly IFormB _formB;
public ApplicationForms(IFormA formA, IFormB formB)
{
_formA = formA;
_formB = formB;
}
public void SubmitApplicationForm(FormData data)
{
switch(data.FormType)
{
case FormType.FormA:
_formA.CreateNewForm(data);
break;
case FormType.FormB:
_formB.CreateNewForm(data);
break;
}
}
}
现在有可能还会有 2 种形式出现(例如FormC
, FormD
, FormE
)。这里会发生的是构造函数中多了 3 个构造函数参数ApplicationForms
。
有没有一种方法可以将所有构造函数参数组合成一个参数?我可以看到它最终肯定会看起来很丑。