基本上我有以下内容:
[Import]
private IEventAggregator EventAggregator { get; set; }
public void DoSomething()
{
//Should I bother to check for null here before using EventAggregator?
}
首先要介绍几件事:
问题2还涉及以下问题:即使我们正在检查的属性是否在类中维护,我们是否应该检查null(即我们应该保护我们类的状态不允许这种情况)。
答案 0 :(得分:6)
MEF的默认行为是在由于缺少部分而无法创建定义时抛出异常。您可以通过将[Import]
属性更改为[Import(AllowDefault = true)]
来解决此问题,这将在导出丢失时允许空值。这显然会影响您的代码,因为您需要在null
方法中明确检查DoSomething
。
关于访问可见性,将导入属性定义为private
意味着它无法在外部进行更改,因此为此...您能保证此属性设置正确吗?如果没有,您需要检查null
。