我一直在使用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成员。一旦我去调试并获得运行时空对象异常,快速修复。
答案 0 :(得分:0)
是的,没关系。 由于某种原因,您使用的API要求您构造一个Options对象,并且编译器无法检查这一点(因此在运行时会出现异常)。
在将对象应用于SomeStuff之前,您还可以构造该对象,如果这对您来说更自然:
Options someOptions = new Options ();
someOptions.MaxSurname = 5;
someStuff.Options = someOptions;
答案 1 :(得分: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的不完整实例。而且感觉很自然。