带参数的UserControl构造函数

3

我的问题是,当我想要使用带有参数的UserControl时,它会调用两个构造函数(既没有参数的构造函数,也有参数的构造函数)。

这种情况正常吗?

如果不正常,应该如何构建对象呢?

public partial class FreeExperience : Arche.Web.UI.UserControlBase
{
    private ItemInfo itemInfo;
    public FreeExperience() : base()
    {
    }
    public FreeExperience(ItemInfo itemInfo) : this()
    {
        this.itemInfo = itemInfo;
    }

我制作了一个简单的用户控件,

在另一个页面上可以像这样调用它。

<%@ Register TagPrefix="uc" TagName="FreeExperience" Src="include/FreeExperience.ascx" %>

...

<uc:FreeExperience ID="ucFreeExperience" runat="server"/>

在这个网页的CS文件中,Page_load函数上。

ucFreeExperience = new Arche.Itempage3.include.FreeExperience(itemInfo);

移除 this() 后,我得到了相同的结果。这正常吗? - Sungguk Lim
2个回答

9

不要在用户控件上使用构造函数。

使用get/set访问器公开属性。


1
public FreeExperience(ItemInfo itemInfo) : this()

:this() 会调用默认构造函数,如果没有特别的原因,您可以将其删除。

实际上,我总是反其道而行之,将带有很少或没有参数的构造函数调用一个带有参数的构造函数,并提供默认值。


删除 this() 后,我得到了相同的结果。您能具体解释一下您使用 UC 的方式吗? - Sungguk Lim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接