ExpandoObjectクラスを探しているようです。このクラスはIDictionary<string, object>
を実装し、名前と値のペアを格納できるようにします。また、IDynamicMetaObjectProvider
を実装しています。この実装では、dynamic
型(C#4.0以降)では、通常のドット構文を使用して、コンパイル時に名前が既知のプロパティ(つまり、variable.Member
)を読み書きできます。
この例では、プロパティの名前と値を持つIEnumerable<KeyValuePair<string, object>>
を返す関数GetPropertyValues()
持っていることを前提とします。あなたは、オブジェクトが、たとえば、ID
財産とStatus
性質を持っていることがわかっている場合
var obj = new ExpandoObject();
var propertyValues = GetPropertyValues();
foreach (var nameValuePair in propertyValues)
obj[nameValuePair.Key] = nameValuePair.Value;
HttpContext.Current.Session[Object1] = obj;
を、
dynamic obj = HttpContext.Current.Session[Object1];
var identifier = obj.ID; // basically the same as var ID = obj["ID"];
obj.Status = GetStatusForID(identifier);
//you can also add properties just by writing to them:
obj.ThisPropertyMightNotExist = "moo";
HttpContext.Current.Session[Object1] = obj;
どうしたのですか?クラスを定義し、インスタンス化し、プロパティを設定してセッションに配置します。データベースからの値のリストがある場合は、コレクションなどを使用します。 –
既存のコードスニペットで何を達成したいのかを説明し、セッションオブジェクトを保存する必要がある理由を説明できますか? – Turbot
@DarinDimitrovリビジョンを作成しました。おそらくもっと明らかになったのでしょうか? – Ber53rker