我在命名空间中定义了一个类:
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'没有 包含'Name'的定义,没有 扩展方法'Name'接受a 类型
的第一个参数
我对这一点感到有点困惑,我认为这些都是正确定义的吗?
可以找到'Artworking.Category' (你错过了使用指令或 汇编参考?)
答案 0 :(得分:6)
您仍然需要在public
类内的属性声明之前添加Category
。
答案 1 :(得分: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)
{
....
}