2011-05-13 45 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) 
{ 
    .... 
}