给出以下统一配置:
<register type="MyProgram.IListDetailsView, MyProgram"
mapTo="MyProgram.ListDetailsView, MyProgram"
name="Contacts List">
<lifetime type="singleton"/>
</register>
我想按如下方式检查代码:
bool firstCall = !container.ContainsInstance("Contacts List"))
IListDetailsView listDetailsView = container.Resolve<IListDetailsView>("Contacts List");
if(firstCall)
{
// do some work on listDetailsView
}
是否有相当于这个(组成)ContainsInstance方法或其他方式来获取此状态数据?我想检查Unity引用一个实例,而不是该类型已经注册。
答案 0 :(得分:0)
我希望我没有误解你的要求。但对我来说,似乎你想在创建一个视图实例时执行一些初始化工作。这通常使用构造函数完成。
您将观点注册为统一。这不会创建视图的实例。对视图类型的第一个解析请求使unity创建视图的新实例。因此,在视图初始化期间您所要做的就是在构造函数内部完成。
答案 1 :(得分:0)
我建议你做错了。应根据需要创建和销毁UI组件。如果你真的需要这样做,那么有一个静态布尔值,指示你的“执行一次”代码是否已经运行。再次,在构造函数中执行此操作。如果需要确保线程安全,则需要锁定构造函数。或者,您可以在静态视图中使用视图详细信息; .Net将确保仅在您第一次访问任何静态成员时运行。