Похоже, все, что вам нужно, это универсальный словарь .
var session = new Dictionary<string, object>();
//set value
session.Add("key", value);
//get value
var value = session["key"] as string;
Если вы хотите сделать это статическим , просто сделайте его статическим членом в другом классе.
public static class SharedStorage
{
private static Dictionary<string, object> _data = new Dictionary<string,object>();
public static Dictionary<string, object> Data { get { return _data; } }
}
Тогда вы можете получить к нему доступ без инициализации:
SharedStorage.Data.Add("someKey", "someValue");
string someValue = (string) SharedStorage.Data["someKey"];
Если вы хотите быть более предприимчивым и используете .NET 4, вы также можете использовать Expando Object , например член ViewBag, доступный для контроллеров в ASP.NET MVC 3:
dynamic expando = new ExpandoObject();
expando.UserId = 5;
var userId = (int) expando.UserId;