列出所有会话变量,包括嵌套节点

时间:2013-05-07 14:54:35

标签: c# asp.net session

我度过了一个糟糕的时光,我知道如何用其他6种语言做到这一点,但是无法让它发挥作用

我希望在.NET应用程序中看到所有会话变量,包含嵌套节点

我使用了List all session info

中的代码

我可以使用

获取所有会话变量的第一级
<% 
for (int i = 0; i < Session.Count; i++)
{
    var crntSession = Session.Keys[i];
    Response.Write(string.Concat(crntSession, "=", Session[crntSession]) + "<br />");
}
%>

这是我输出的一部分

Mode=M
TreeRefresh=
AdvUser=TheName.WebFramework.Security.AdvanceUser

我如何迭代AdvUser并获取其值?

我试过这个,但它返回错误CS1061:'object'不包含'Count'的定义

for (int i = 0; i < Session["AdvUser"].Count; i++)

我也试过这个并得到了错误

  

CS1579:foreach语句不能对类型的变量进行操作   'System.Type'因为'System.Type'不包含公共   'GetEnumerator'的定义

foreach (var crntSession in Session["AdvUser"].GetType())

我只是不知道如何获得那个嵌套节点的值,它不一定要在C#中可以在VB中

1 个答案:

答案 0 :(得分:1)

您尝试做的事情并没有多大意义,因为AdvUser似乎是TheName.WebFramework.Security.AdvanceUser类的一个实例。这个类有属性,但你不能像数组一样循环遍历它们,除非你使用反射。

像这样:http://msdn.microsoft.com/en-us/library/k2w5ey1e.aspx

MyClass MyObject = new MyClass();
     MemberInfo [] myMemberInfo; 

     // Get the type of the class 'MyClass'.
     Type myType = MyObject.GetType(); 

     // Get the public instance members of the class 'MyClass'. 
     myMemberInfo = myType.GetMembers(BindingFlags.Public|BindingFlags.Instance);

     Console.WriteLine( "\nThe public instance members of class '{0}' are : \n", myType); 
     for (int i =0 ; i < myMemberInfo.Length ; i++)
     {
        // Display name and type of the member of 'MyClass'.
        Console.WriteLine( "'{0}' is a {1}", myMemberInfo[i].Name, myMemberInfo[i].MemberType);
     }
相关问题