是否可以注册一个带有预期从创建点传递的参数的类?
我知道可以这样做:
GlobalContainer.RegisterType<TUserProcessor>.Implements<IUserUpgrader>.
AsTransient.DelegateTo(
function: TUserProcessor
begin
Result := TUserProcessor.Create(GetCurrentUser);
end
);
但是在这种情况下,参数绑定到容器注册的执行上下文中,而不是对象实例化的上下文中。例如,是否可以做到这样?
GlobalContainer.Resolve<IMathService>([FCurrentUser]);
我知道有些人倡导使用非常简单的构造函数,但有时候构造参数看起来更明显方便:
所构造的对象需要对象参数才能工作,因此必须满足引用。参数也使得查看类时这个约束更加明显。
你可以在方法或属性中分配引用,并且如果在没有先进行赋值的情况下尝试使用对象,则在每个其他方法中引发异常。我不喜欢编写这种类型的代码,这只是浪费时间,只需使用构造函数参数并在那里检查即可。在我看来,代码越少越好。
传递的对象也是在使用容器(例如Transaction对象)构造新对象的对象本地化,并且具有一些状态(它不是可以通过容器获得的新对象)。
TContainer.Resolve<T>
接受一个数组参数。我有所遗漏吗? - menjaraz