2

変数を介してクラスフィールドを参照できるかどうか疑問に思っていました。そのようです:

int variable = 0;
while (variable > 3)
{
   class._fieldvariable = something;
   i++
}

_field1、_field2、_field3 というフィールドがある場合、それらすべてを反復処理できます。

これを行う主な理由は、複数のレコードを追加する SQL クエリがあり、すべてのパラメーターを複数回実行する必要はなく、次のようなことです。

while (i < 4)
}
   command.Parameters.AddWithValue("@Alpha1", _alphai01.ToString());
   i++
}

パラメータを _alpha101 で 3 回設定できるようにするには、_alpha201 と _alpha301 を 3 つの異なるクエリに使用します。

ありがとう!

4

3 に答える 3

1

プロパティをフィールドに関連付けます。すべてのフィールドに get/set アクセス権があります。

実際に 3 つのフィールドについて話している場合、対応するプロパティを返す関数 を使用することで、多かれ少なかれクリーンな方法でそれを行うことができます。GetField(int index)その後、あなたのコードは

class.GetField(i) = something;

より一般的な場合 (たとえば、フィールド数が変更されることが予想される場合) には、配列の方が適しています。

このような単純な目的でリフレクションを使用することはお勧めしません。

于 2013-05-07T14:24:58.623 に答える
0

invokeMemberプロパティの特定のセッターを呼び出すために使用できます。

Object obj; //your instance;

obj.GetType().InvokeMember("Alpha1",
BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty,
Type.DefaultBinder, obj, "ValueForAlpha1");

それは等しい

obj.Alpha1 = "ValueForAlpha1";

http://msdn.microsoft.com/en-US/library/vstudio/66btctbe.aspx

于 2013-05-07T14:24:43.773 に答える