Mamy do czynienia z dziwnym problemem podczas korzystania z metody GetItems i przekazywania każdej pozycji z zwróconej kolekcji innej metody.Uzyskiwanie dostępu do właściwości obiektów TOM.NET podczas przesyłania ich między metodami po wywołaniu funkcji GetItems (filtr)
Jesteśmy na Tridion 2011 GA.
Poniższy kod jest łamanie:
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 !?
}
Jednakże, jeśli sg.Directory jest dostęp przed przekazaniem SG do następnej metody, wszystko działa bez zarzutu:
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 }
}
Czuje, że dzieje się coś z metodą GetItems(), która nie zwraca pełnego obiektu, a po przejściu częściowo załadowanego obiektu do następnej metody nie jest w stanie wczytać właściwości tak, jakby utracono oryginalne odniesienie.
Czy ktoś może rzucić trochę światła na to, co się tutaj dzieje? Ponadto, czy przekazywanie obiektów TOM.NET między metodami jest złe?
Dzięki