12

我有一个由许多其他对象组成的对象!我正在尝试查找其中一个属性(枚举)的值,但找不到。

现在,通常如果我想检查一个对象是否为空,我可以做

if (object == null) 

但这会导致相同的错误。

我试过

if (object.Equals(null)) and the same error.

我收到的错误消息是 objectName throw exception: System.NullReferenceException: Object reference not set to an instance of an object..

我正在尝试确定我的对象是否已实例化。现在,我可以将它放入 try catch,如果它出错,那么我知道它不是,但对我来说这感觉非常错误(尽管我可能别无选择)。

我遇到的另一个问题是这个项目不是我的,对每个人来说都是一个黑匣子,所以我不能对原始对象进行任何更改!这意味着,我所拥有的就是我所拥有的,一个可能会或可能不会被实例化的对象,我需要一种方式来表达。

除了try catch,我还有其他选择吗?

编辑

所以,对象是

public partial class SaveBundleResponse 
{
    SaveBundleResponseHeader header;
}

public partial class SaveBundleResponseHeader 
{      
        private SaveBundleResponseHeaderStatus status;
}

public enum SaveBundleResponseHeaderStatus 
{        
        Success, Fail, OK, OtherStates
}

所以 SaveBundleResponse 最初是创建的,然后实例通过“工作流”风格的环境传递,每个属性都变成“填充/更新”等,因为它深入到工作流中。但是,在少数情况下,从未设置枚举。

问题是,我需要知道枚举的值(或者它是否为空)。

我尝试使用的代码是

        if (saveBundleResponse.Header.Status // what ever happens, it fails at this point as Status is not initiated.
4

2 回答 2

9
if (saveBundleResponse != null)
{
    var header = saveBundleResponse.Header;
    if (header != null)
    {
        var status = header.Status;
    }
}
于 2013-02-01T14:56:13.307 回答
4

你应该能够使用这样的东西:

SaveBundleResponse sbr = ...;
if (sbr.Header != null && !sbr.IsDisposed)
{
    //Do the work
}

这应该有效(如果该类不是控件,则不能使用 IsDisposed 检查)。

于 2013-02-01T14:51:50.793 回答