2012-04-03 11 views
0

セッション変数に動的オブジェクトを追加する方法を理解するのに問題があります。編集:私は十分に自分自身を説明したとは思わない。もう一度試してみましょう。セッション変数への動的C#オブジェクト?

Example: 
Object1 
Property1 = Value1 
Property2 = Value2 
Property3 = Value3 
(All of which are generated dynamically from the database.) 

object obj = new object(); 
obj.add(property = value) // Not sure of syntax, but I'd be looping this to add stuff. 
// Then when it's done looping... 
HttpContext.Current.Session[Object1] = obj; 
+0

どうしたのですか?クラスを定義し、インスタンス化し、プロパティを設定してセッションに配置します。データベースからの値のリストがある場合は、コレクションなどを使用します。 –

+0

既存のコードスニペットで何を達成したいのかを説明し、セッションオブジェクトを保存する必要がある理由を説明できますか? – Turbot

+0

@DarinDimitrovリビジョンを作成しました。おそらくもっと明らかになったのでしょうか? – Ber53rker

答えて

0

セッション変数を宣言するための構文は、あなたがそれをリフレッシュしたい心のたびにキープセッション

string strValueFromSession = session[VariableName].ToString(); 

の値を取得するには

session[VariableName] = Value; 

あるASP.net Forum

からそれをもう一度保存する必要があります。

0

オブジェクト自体がデータベースから動的に生成されたとは思いません。セッションからアイテムを取得するには

Session["MyObject"] = someObject; //your object 

、あなたはキャストを使用します:それは、オブジェクトがあなただけの何か他のもののようなセッションで中に格納します。その場合にはデータベースから読み込まれていることをより多くの可能性があります

var obj = Session["MyObject"] as MyObject; 
if (obj != null) 
{ 
    Response.Write(obj.SomeProperty); 
} 
0
class DynamicClass 
{ 
    public String DynamicObject; 
} 

public dynamic DynamicProperty 
{ 
    get 
    { 
     return Session["Dynamic"]; 
    } 
    set 
    { 
     Session["Dynamic"] = value; 
    } 
} 

DynamicClass d = new DynamicClass(); 
d.DynamicObject = "Hi"; 
dynamic Obj = d; 
DynamicProperty = Obj; 
2

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; 
関連する問題