2011-05-13 44 views
2

我有一個命名空間中定義一個類:的「名稱」沒有定義,發現了

namespace Artworking 
{ 
    public class Category 
    { 
     int ID {get;set;} 
     string Name {get;set;} 

     public Category(int ID, string Name) 
     { 
      this.ID = ID; 
      this.Name = Name; 
     } 
     public Category(int ID) 
     { 
      using (CrystalCommon.MainContext db = new CrystalCommon.MainContext()) 
      { 
       var q = (from c in db.tblArtworkTemplateCategories where c.ID == ID select c).SingleOrDefault(); 
       this.ID = q.ID; 
       this.Name = q.CatName; 
      } 
     } 
    } 
} 

在我的內容頁我獲取所有從另一個功能分類,並將它們添加到列表框控件:

 // Category select 
     Artworking.Category[] Cats = Artworking.CommonFunctions.FetchAllCategories(Master.LoggedInUser.Client.ID); 
     foreach(Artworking.Category C in Cats){ 
      ListItem NewItem = new ListItem(); 
      NewItem.Text = C.Name; 
      NewItem.Value = C.ID; 
      CategorySelect.Items.Add(NewItem); 
     } 

然而,對於在NewItem.Text = C.Name行某種原因,它拋出:

CS1061: 'Artworking.Category' 不 包含「名稱」,並沒有 擴展方法「姓名」接受型

的 第一個參數的定義,我有點困惑這一塊,我覺得這一切都正確定義?

「Artworking.Category」可以發現 (是否缺少using指令或 程序集引用?)

回答

6

您仍然需要之前Category類中的屬性聲明添加public

+0

哇我覺得自己像一個白癡,被困在那個年齡段,謝謝 – 2011-05-13 15:03:08

4

你的財產Name應標public(根據您嘗試訪問它的類之外的事實也應ID。)

public class Category 
{ 
    public int ID { get;set; } 
    public string Name { get;set; } 

    .... 
} 

另外一個小的建議 - 爲什麼不引用Artworking命名空間在您的代碼中通過using聲明?它會使你的代碼更加整潔,而不是不斷地在多行中輸入完整的命名空間:

using Artworking; 

// Category select 
Category[] Cats = CommonFunctions.FetchAllCategories(Master.LoggedInUser.Client.ID); 

foreach(Category C in Cats) 
{ 
    .... 
}