Uns bereitet ein seltsames Problem, wenn Sie die GetItems-Methode verwenden und jedes Element in der zurückgegebenen Auflistung an eine andere Methode übergeben.Zugreifen auf Eigenschaften von TOM.NET-Objekten beim Übergeben von Methoden nach dem Aufruf GetItems (Filter)
Wir sind auf Tridion 2011 GA.
Die folgende den Code zu brechen ist:
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 !?
}
Wenn jedoch der sg.Directory Zugang vor sg in die nächste Methode übergeben ist, alles funktioniert gut:
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 }
}
Es fühlt sich an, dass Es gibt etwas mit der GetItems() - Methode, bei der das vollständige Objekt nicht zurückgegeben wird. Sobald das teilweise geladene Objekt an die nächste Methode übergeben wurde, können die Eigenschaften nicht mehr so geladen werden, als ob die ursprüngliche Referenz verloren gegangen wäre.
Kann jemand bitte etwas Licht auf das werfen, was hier passiert? Ist es auch schlecht, TOM.NET-Objekte zwischen Methoden zu übergeben?
Dank