Code Contract通过ServiceLocator提供空警告

时间:2011-02-22 19:33:35

标签: c# .net code-contracts

使用HtmlPage.RegisterScriptableObject("Shell", serviceLocator.GetInstance<Shell>());

给我一​​个空警告。我怎么能让它消失?

2 个答案:

答案 0 :(得分:0)

警告是serviceLocator为空?

如果没有再看到你的代码(了解其他合同可能在哪里),你可以把

Contract.Assume(serviceLocator != null);

在上面一行。

答案 1 :(得分:0)

如果找不到实例,则serviceLocator.GetInstance<Shell>()可能返回null。

尝试为该情况提供替代控制流程。

var instance = serviceLocator.GetInstance<Shell>();
if (instance == null)
    throw new InvalidOperationException("Shell instance is missing.");
HtmlPage.RegisterScriptableObject("Shell", instance);