3

オプションのパラメーターを持つworkerメソッドがあります

Work(string input = DefaultInput)
{
    //do stuff
}

そして、私はこれの周りにラッパーを持っています。これも文字列を取りますinputが、これはオプションにすることもできます...

WorkWrapper(int someParameter, string input = DefaultInput)
{
    //do initialization
    Work(input);

}

ここでの問題は、DefaultInputへの参照を複製することです。たとえば、workのデフォルト入力をに変更した場合NewDefaultInput、workWrapperも更新する必要があります。そうしないと、古いデフォルトが引き続き使用されます。

デフォルトの入力を2回宣言する必要がないようにする方法はありますか?おそらくworkwrapperのための2つのオーバーロードがない。

4

1 に答える 1

3

デフォルトを2つのメソッド間で同期させたい場合は、ラッパーにデフォルトを含める必要はありません。

public void Work(string input = DefaultInput)
{
    //do stuff
}

…</p>

public void WorkWrapper(int someParameter, string inputOverride = null)
{
    //do initialization

    if (inputOverride == null) Work();
    else Work(inputOverride);    
}

それらが同じクラス/階層にある場合は、を宣言しconstて、デフォルトが同じままであることを確認することもできます。

private const string DEFAULT_INPUT = "Default Input"; // protected if in base class

public void Work(string input = DEFAULT_INPUT)
{
    //do stuff
}

public void WorkWrapper(int someParameter, string input = DEFAULT_INPUT)
{
    //do initialization
    Work(input);    
}
于 2012-06-21T03:29:06.287 に答える