我对使用依赖注入非常陌生,我正在我的 WPF 应用程序中使用 Ninject 进行尝试。我想知道我应该如何跨类传递参数。
例如
public class ViewPersonViewModel : ViewModelBase
{
private IDataAccessService _dataService;
private IPerson _person;
private string _remarks;
// binded to textbox
public string Remarks
{
get { return _remarks; }
set {
if (_remarks != value) {
remarks = value;
OnPropertyChanged("Remarks");
}
}
}
public ViewPersonViewModel(
IDataAccessService dataService, IPerson person)
{
_dataService= dataService;
_person = person;
}
// binded to Button
public void RetrieveStatus()
{
Remarks = _dataService.RetrieveRemarks(_person);
}
}
在这里,dataService 是一个固定的类,我大概可以做
class Module : Ninject.Modules.NinjectModule
{
public override void Load()
{
Bind<IDataAccessService>().To<DefaultDataAccessService>();
}
}
但我想知道我应该如何处理 person 参数,它是由调用类设置的。
我从在构造函数中使用带有附加参数的 Ninject 创建实例中看到,可以在构造函数中传递附加参数。
但是,我有几个担忧:
是用
kernel.Get<MyClass>( With.Parameters.ConstructorArgument( "parameterName", parameterValue) );
理想的方式吗?它不会在调试中引起很多问题,例如您输入parameterName
错误吗?Ruben 还提到了在涉及 Provider 的情况下使用更复杂的方式。在这里适用吗?如果是,我该如何使用它?