1

我过得很糟糕,我知道如何用其他 6 种语言做到这一点,但无法让它发挥作用

我想查看 .NET 应用程序中的所有会话变量,包括嵌套节点

我使用了这里的代码列出所有会话信息

我可以使用所有会话变量的第一级

<% 
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' does not contain a definition for '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 中

4

1 回答 1

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);
     }
于 2013-05-07T15:00:09.053 回答