2012-11-13 17 views
-2

我動態加載控件並將文本傳遞給控件。但是,當我設置公共財產時,我得到了一個無例外的例外。C#公共屬性未處理的異常

我的控制是:

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); 

錯誤那張集合{說法只是未處理的異常

回答

3

你的屬性引用本身。你可以將它更改爲:

public String pcode { get; set; } 

或定義私有字符串字段和使用:

private string _pcode; 

public string Pcode 
{ 
    get { return _pcode; } 
    set { _pcode = value; } 
} 

而且它的更好,如果你開始用大寫的屬性名稱,(使用Pascal case

0

執行獲取並設置引用屬性本身時;你應該A)有一個潛在的變量來保存呼叫者無法訪問的值,或者使用B)auto-implemented properties

private string _pcode 
public String pcode { 
    get { return _pcode; } 
    set { _pcode = value; } 
} 

或者,

public String pcode { get; set; } 
1

這是最有可能的堆棧溢出異常。你基本上是在說回報本身就是永遠持續下去的。

你可以做什麼哈比卜說,使用get; set;語法糖,但如果你想多一點的控制來處理這個典型的方法是創建一個字段來存儲像這樣的值:

private string _pcode; 

public string pcode { get { return _pcode; } set { _pcode = value; } }