好的,我在基类中定义了一个依赖属性,我试图在其派生类的构造函数中使用它,但这不起作用,该属性显示为 null。Unity 在使用 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>();