好吧,我有一个基类中定义的依赖性,我想用它它的派生类的构造函数里面,但不工作时,属性显示为空。 统一解决从属属性AFTER解决与container.Resolve)的实例(;
一种替代我是一个IUnityContainer参数添加到我的MyViewModel类的构造函数,并设置ILogger属性我自己喜欢的东西:
public MyViewModel(IUnityContainer container)
{
Logger = container.Resolve<ILogger>();
}
编辑:通过@Wiktor_Zychla另一个建议是通过一个构造注射参数为:
public MyViewModel(ILogger _logger)
{
Logger = _logger;
}
这似乎很好地工作,但我会做到这一点对我的所有派生的ViewModels ..
但后来我没有用我的基类中的注释ILogger依赖。 请看下文中我类别的样本。 现在的问题是:哪些选择呢我有,或者我究竟做错了什么?
谢谢!
我有一个ViewModel基类是这样的:
public abstract class ViewModelBase
{
[Dependency]
public ILogger Logger { get; set; }
....
}
然后,我有一个类继承的是:
public class MyViewModel : ViewModelBase
{
public MyViewModel()
{
//I want to use my dependent property in constructor, but doesn't
Logger.Error("PRINT AN ERROR");
}
}
而在我的应用程序入口点我登记我的ILogger作为一个单独和我MyViewModel类:
container.RegisterType<ILogger, MyAppLogger>(new ContainerControlledLifetimeManager());
container.RegisterType<MyViewModel>();