Es klingt, als ob Sie nach der Klasse ExpandoObject suchen könnten. Diese Klasse implementiert IDictionary<string, object>
und ermöglicht das Speichern von Name/Wert-Paaren. Es implementiert auch IDynamicMetaObjectProvider
; Diese Implementierung ermöglicht es Ihnen, über den Typ dynamic
(in C# 4.0 und höher) die normale "Punkt" -Syntax zum Lesen und Schreiben von Eigenschaften zu verwenden, deren Namen zur Kompilierungszeit bekannt sind (also variable.Member
).
Dieses Beispiel geht davon aus, dass Sie eine Funktion GetPropertyValues()
haben, die eine IEnumerable<KeyValuePair<string, object>>
mit den Eigenschaften Namen und Werte zurückgibt:
var obj = new ExpandoObject();
var propertyValues = GetPropertyValues();
foreach (var nameValuePair in propertyValues)
obj[nameValuePair.Key] = nameValuePair.Value;
HttpContext.Current.Session[Object1] = obj;
Wenn Sie wissen, dass das Objekt eine ID
Eigenschaft und eine Status
Eigenschaft, zum Beispiel, Sie könnten es wie folgt verwenden:
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;
Was ist das Problem? Sie definieren eine Klasse, instanziieren sie, legen ihre Eigenschaften fest und legen sie in die Sitzung ein. Wenn Sie eine Liste von Werten aus der Datenbank haben, dann verwenden Sie Sammlungen und so weiter ... –
Können Sie sagen, was Sie mit dem vorhandenen Code-Snippet erreichen wollen und erklären, warum Sie das Session-Objekt speichern müssen? – Turbot
@DarinDimitrov Hat eine Revision gemacht, vielleicht ist es jetzt klarer? – Ber53rker