遍历类,即。 asp.net的bean

时间:2020-03-06 14:38:06  来源:igfitidea点击:

可以说我有一个类,用于存储带有getter和setter的用户信息,并且该类中填充了XML文件中的数据。我将如何像使用Java bean和标记库那样遍历该类的所有实例?

解决方案

假设我们可以获取该类的所有实例并将其添加到泛型列表中。

List<YourClass> myObjects = SomeMagicMethodThatGetsAllInstancesOfThatClassAndAddsThemtoTheCollection();
foreach (YourClass instance in myObjects)
{
Response.Write(instance.PropertyName.ToString();
}

如果我们不想指定每个属性名称,则可以使用Reflection(请参阅PropertyInfo),并以此方式进行操作。同样,不确定这是否是意图。

对于输出格式化的HTML,我们有几种选择。我可能会做的是在代码隐藏区上创建一个属性,该属性可以访问要迭代的对象的集合。然后,我将在.aspx页面本身上编写用于对其进行迭代和格式化的逻辑。例如,.aspx页:

[snip]
<body>
    <form id="form1" runat="server">
        <% Somethings.ForEach(s => { %>
            <h1><%=s.Name %></h1>
            <h2><%=s.Id %></h2>
        <% }); %>
    </form>
</body>
</html>

然后是后面的代码:

[snip]
public partial class _Default : System.Web.UI.Page
    {
        protected List<Something> Somethings { get; private set; }
        protected void Page_Load(object sender, EventArgs e)
        {
            Somethings = GetSomethings(); // Or whatever populates the collection

        }
[snip]

我们还可以查看使用中继器控件并将DataSource设置为集合。它与上面的代码几乎相同,但是我认为这种方式更清晰(我认为)。