0

我一直在使用 API 来做一些工作。这是我第一次使用它的方式:

var someStuff = new myObject ();
someStuff.Name = "stackOverflow";
someStuff.Options.MaxSurname = 5; //this caused me to get a runtime exception, Options is Null

修复很简单。我显然必须新建 Options 成员才能创建一个实例。

someStuff.Options = new Options ();
someStuff.Options.MaxSurname = 5;

显然,这现在按预期工作。这个可以吗?作为客户,我不知道我必须新加入这个 Options 成员。一旦我去调试并得到运行时空对象异常,快速修复。

4

2 回答 2

0

是的,这没关系。由于某种原因,您使用的 API 要求您构造一个 Options 对象,而编译器无法检查这一点(因此在运行时出现异常)。

你也可以在将它应用到 SomeStuff 之前构造对象,如果这对你来说感觉更自然:

Options someOptions = new Options ();
someOptions.MaxSurname = 5;
someStuff.Options = someOptions;
于 2012-06-08T10:51:42.393 回答
0

你总是可以使用工厂方法。

示例代码:

public class MyObjectFactory
{
    public static MyObject CreateSomeObject()
    {
        return new MyObject() { SomeOptions = new Options(); }
    }
}

// used as ...
var myObject = MyObjectFactory.CreateSomeObject();
myObject.Options.MaxSurNames = 5;

因此,您无法再获得 MyObject 的不完整实例。而且感觉很自然。

于 2012-06-08T11:09:38.443 回答