Chúng ta đang gặp phải một vấn đề lạ khi sử dụng phương thức GetItems và chuyển từng mục trong bộ sưu tập đã trả về sang phương thức khác.Truy cập các thuộc tính của đối tượng TOM.NET khi truyền chúng giữa các phương thức sau khi GetItems (bộ lọc) gọi
Chúng tôi đang ở trên Tridion 2011 GA.
Sau đây mã được phá vỡ:
private void foo(StructureGroup structureGroup, Session session, int counterTemp, int levels)
{
OrganizationalItemItemsFilter filtersg= new OrganizationalItemItemsFilter(session);
filtersg.Recursive = false;
IEnumerable<ItemType> itemtype = new List<ItemType> { ItemType.StructureGroup};
filtersg.ItemTypes = itemtype;
foreach (StructureGroup sg in structureGroup.GetItems(filtersg))
{
GetSiteMap(sg, counterTemp, levels);
}
}
private void GetSiteMap(StructureGroup sg, int counter, int levels)
{
logger.Info(sg.Id); //ok
logger.Info(sg.Title); //ok
logger.Info(sg.Directory); // null !?
}
Tuy nhiên, nếu sg.Directory là truy cập trước khi đi sg vào phương pháp tiếp theo, tất cả hoạt động tốt:
private void foo(StructureGroup structureGroup, Session session, int counterTemp, int levels)
OrganizationalItemItemsFilter filtersg= new OrganizationalItemItemsFilter(session);
filtersg.Recursive = false;
IEnumerable<ItemType> itemtype = new List<ItemType> { ItemType.StructureGroup};
filtersg.ItemTypes = itemtype;
foreach (StructureGroup sg in structureGroup.GetItems(filtersg))
{
logger.Info(sg.Directory); //if printed here, all works fine down the line.
GetSiteMap(sg, counterTemp, levels);
}
}
private void GetSiteMap(StructureGroup sg, int counter, int levels)
{
logger.Info(sg.Id); //ok
logger.Info(sg.Title); //ok
logger.Info(sg.Directory); // ok }
}
Nó cảm thấy rằng có một cái gì đó đang xảy ra với phương thức GetItems() mà nó không trả về đối tượng đầy đủ, và một khi truyền đối tượng được tải một phần sang phương thức tiếp theo, nó không thể nạp các thuộc tính như thể tham chiếu ban đầu bị mất.
Ai đó có thể làm sáng tỏ một số điều đang xảy ra ở đây không? Ngoài ra, nó là xấu để vượt qua đối tượng TOM.NET giữa các phương pháp?
Cảm ơn