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;

明らかに、これは期待どおりに機能するようになりました。これでいいですか?クライアントとして、私はこのオプション メンバーを新しくしなければならないことに気づいていませんでした。デバッグに行って実行時のnullオブジェクト例外が発生したら、簡単に修正してください。

4

2 に答える 2

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 に答える
0

はい、これでいいです。何らかの理由で、使用している API では Options オブジェクトを構築する必要があり、コンパイラはこれをチェックできません (したがって、実行時に例外が発生します)。

より自然に感じる場合は、オブジェクトを SomeStuff に適用する前に構築することもできます。

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