我度过了一个糟糕的时光,我知道如何用其他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'不包含'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中
答案 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);
}