В моем текущем проекте я довольно интенсивно использую отражения, чтобы значительно упростить связь между моими контроллерами и сервисами wcf. Теперь я хочу получить значение из Session внутри объекта, который не имеет прямого доступа к HttpSessionStateBase (IE: не контроллер). Например, ViewModel. Я мог бы передать это или передать ссылку на него и т. Д., Но это не оптимально в моей ситуации.
Поскольку в какой-то момент в моем сценарии все происходит из контроллера, я могу сделать следующее, чтобы переместить мешок в контроллер, откуда поступил вызов, довольно просто:
var trace = new System.Diagnostics.StackTrace();
foreach (var frame in trace.GetFrames())
{
var type = frame.GetMethod().DeclaringType;
var prop = type.GetProperty("Session");
if(prop != null)
{
// not sure about this part...
var value = prop.GetValue(type, null);
break;
}
}
Проблема здесь в том, что я не могу понять, как получить «экземпляр» контроллера или свойство Session, чтобы я мог читать из него.