我正在动态加载控件并将文本传递给控件。但是当我设置公共财产时,我得到了一个未经解决的例外。
我的控制权是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace g247_Test.controls
{
public partial class carousel_guards : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
public String pcode
{
get
{
return pcode;
}
set
{
pcode = value;
}
}
}
}
使用以下命令加载上一页的控件:
carousel_guards webUserControl = (carousel_guards)Page.LoadControl("~/controls/carousel-guards.ascx");
webUserControl.pcode = "rg402eg";
phGuardsList.Controls.Add(webUserControl);
错误发生在集{表示刚刚未处理的异常
答案 0 :(得分:3)
您的财产正在引用自己。您可以将其更改为:
public String pcode { get; set; }
或定义私有字符串字段并使用:
private string _pcode;
public string Pcode
{
get { return _pcode; }
set { _pcode = value; }
}
如果使用大写字母(使用Pascal case)
启动属性名称,也会更好答案 1 :(得分:1)
这很可能是堆栈溢出异常。你基本上是在告诉回归本身,这将永远存在。
您可以执行Habib所说的并使用get; set;
语法糖,但如果您想要更多控制,处理此问题的典型方法是创建一个字段来存储值,如下所示:
private string _pcode;
public string pcode { get { return _pcode; } set { _pcode = value; } }
答案 2 :(得分:0)
在进行get和set时,你引用了属性本身;你应该A)有一个底层变量来保存调用者无法访问的值,或者使用B)auto-implemented properties。
private string _pcode
public String pcode {
get { return _pcode; }
set { _pcode = value; }
}
或者,
public String pcode { get; set; }