Доступ к элементам бизнес-объекта по индексу
Добавлено: 27 фев 2015, 15:28
Добрый день!
Зарегистрировал как бизнес-объект список объектов типа DseInfo, в свойстве Attributes которых список возможных атрибутов
Хотелось бы построить отчет, который представляет собой таблицу с тремя колонками, например:
1. DseInfo.Name
2. DseInfo.Description
3. DseInfo.Attributes["Тип"]
С последней колонкой возникли затруднения. Как написать выражение таким образом, чтобы получить значение по индексу элемента в подчиненном бизнес-объекте?
Зарегистрировал как бизнес-объект список объектов типа DseInfo, в свойстве Attributes которых список возможных атрибутов
Хотелось бы построить отчет, который представляет собой таблицу с тремя колонками, например:
1. DseInfo.Name
2. DseInfo.Description
3. DseInfo.Attributes["Тип"]
С последней колонкой возникли затруднения. Как написать выражение таким образом, чтобы получить значение по индексу элемента в подчиненном бизнес-объекте?
Код: Выделить всё
void Main()
{
var list = new List<DseInfo>();
var dse1 = new DseInfo{Name = "Болт",Description = "Крепежный болт"};
dse1.Attributes["Тип"] = "Деталь";
dse1.Attributes["Материал"] = "Сталь";
var dse2 = new DseInfo{Name = "Ящик",Description = "Упаковка"};
dse2.Attributes["Тип"] = "Сборочная единица";
list.AddRange(new []{dse1,dse2});
var report = new StiReport();
report.RegBusinessObject("dseList",list);
report.Design();
}
public class DseInfo
{
public string Name {get;set;}
public string Description {get;set;}
public DseAttributes Attributes {get;private set;}
public DseInfo()
{
Attributes = new DseAttributes();
}
}
public class DseAttributes : List<DseAttribute>
{
public string this[string name]
{
get
{
var attr = this.FirstOrDefault(t=>t.Name.Equals(name,StringComparison.InvariantCultureIgnoreCase));
if (attr == null)
return "";
else
return attr.Value;
}
set
{
var attr = this.FirstOrDefault(t=>t.Name.Equals(name,StringComparison.InvariantCultureIgnoreCase));
if (attr == null)
{
attr = new DseAttribute{Name = name,Value = value};
this.Add(attr);
}
else
{
attr.Value = value;
}
}
}
}
public class DseAttribute
{
public string Name { get; set; }
public string Value {get;set;}
}