#c# #asp.net #class #methods
#c# #asp.net #класс #методы
Вопрос:
У меня есть класс, определенный в пространстве имен:
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;
}
}
}
}
На моей странице содержимого я извлекаю все категории из другой функции и добавляю к ним элемент управления listbox:
// 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: ‘Художественная обработка.Категория’ не содержит определения ‘Name’ и никакого метода расширения ‘Name’, принимающего первый аргумент типа
Я немного запутался в этом, я думал, что все это определено правильно?
‘Художественная обработка.Удалось найти ‘Category’ (вам не хватает директивы using или ссылки на сборку?)
Ответ №1:
Вам все еще нужно добавить public
перед объявлениями свойств внутри Category
класса.
Ответ №2:
Ваше свойство 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)
{
....
}