これは非常に簡単に答えられるはずですが、適切に質問する方法すらわからないので、事前にn00b-nessについてお詫び申し上げます。私は運がない検索のためにそれを言い換えるのに苦労しました...
基本的に、いくつかの引数を「スイッチ」(呼び出し元のメソッドによって0または1に設定)およびオプションの文字列として受け取り、それらを使用してアクションの計画を「構築」するメソッドがあります。これは次のようになります。
public static void Foo(int a, int b, int c, optionalString aa, optionalString, bb, optionalString cc)
{
if (a == 1)
{ Object1 o1 = Thing.Property1[aa]; }
if (b == 1)
{ Object2 o2 = Thing.Property2[bb]; }
if (c == 1)
{ Object3 o3 = Thing.Property3[cc]; }
Bar(optionalo1, optionalo2, optionalo3); // Edit: I explained this part a little wrong, see below.
}
明確にするために編集:Bar()
実際に設定されたプロパティでのみ呼び出す必要があるため、null値を渡すことはできません。たとえば、Foo()は、次のように設定されたa、b、およびcで呼び出されます。
Foo(1, 0, 1, string1, string3) //In this instance I only want the first and third properties set. The strings contain the values I want them set to.
{
if (a == 1)
{ set this property based on string1 }
if (b == 1)
{ this one would not be set because b was 0 }
if (c == 1)
{ set this property based on string3 }
Bar(property1, property3);
// In this instance, Bar() must be called with only those two arguments, it cannot contain any null values.
編集終了
したがって、の可能なすべての組み合わせに対してネストされたif()
ステートメントまたはメソッドのクラップロードを使用せずBar()
に、それらすべてが評価されたら、それを呼び出す方法はありますか?技術的には、変数はまだ割り当てられていないため、Bar()
無効です。あるいは、このようなことを達成するためのより良い方法はありますか?
これは、SharePointサーバーオブジェクトモデルと対話するコンソールアプリ用であり、違いが生じます。どうもありがとうございました!