Siamo di fronte a uno strano problema quando si utilizza il metodo GetItems e si passa a ciascun elemento all'interno della raccolta restituita a un altro metodo.Accesso alle proprietà degli oggetti TOM.NET durante il loro passaggio tra i metodi dopo la chiamata GetItems (filtro)
Siamo su Tridion 2011 GA.
Il seguente codice è rottura:
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 !?
}
Tuttavia, se lo sg.Directory è l'accesso prima di passare sg nel metodo successivo, tutto funziona benissimo:
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 }
}
Si ritiene che c'è qualcosa in corso con il metodo GetItems() in cui non restituisce l'oggetto completo e, una volta passato l'oggetto parzialmente caricato al metodo successivo, non è in grado di caricare le proprietà come se il riferimento originale fosse perso.
Qualcuno può per favore fare luce su quello che sta succedendo qui? Inoltre, è sbagliato passare oggetti TOM.NET tra i metodi?
Grazie