C#のオブジェクトは、実行時に目的の属性の名前が文字列として提供されている場合、 ?オブジェクト名["foo"]のように、属性名を文字列として使用して属性値を取得する方法
myObject["price"]
のは、我々は、このオブジェクトを持っているとしましょう:
public class Widget
{
public Widget(){}
public DateTime productionDate {get;set;}
public decimal price {get;set;}
}
と、このSqlCommandオブジェクトパラメータの定義:異なる範囲内の他の場所でのコードで
SqlCommand c = new SqlCommand();
c.Parameters.Add(new SqlParameter("@price", SqlDbType.SmallMoney,0,"price"));
、ユーザーが[Save Record]
をクリックしましたウィジェットオブジェクトの値を更新コマンドのパラメータにバインドする必要があります。私たちは、変数command
でそのSqlCommandオブジェクトへの参照を持っている:Crowcoderへ
foreach (SqlParameter p in command.Parameters)
{
// assume `parameter.SourceColumn` matches the widget attribute name
string attributeName = p.SourceColumn;
p.Value = widget[attributeName] // ??
}
私はあなたが "プロパティ"を意味すると思いますが、それはc#で独自の意味を持つ属性ではありません。もちろん、Reflectionを使用してプロパティ値を名前で取得することもできます。 – Crowcoder
あなたが参照しているように_exactly_プロパティにアクセスするには、キーアクセサーの 'public TValue this [TKey key] {get;}を使って値を取得するための' Dictionary '型が必要です。セット; } ' –