使客户成为新成员

时间:2012-06-08 10:40:02

标签: class architecture software-design

我一直在使用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成员。一旦我去调试并获得运行时空对象异常,快速修复。

2 个答案:

答案 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的不完整实例。而且感觉很自然。