GetItems メソッドを使用して、返されたコレクション内の各アイテムを別のメソッドに渡すときに、奇妙な問題に直面しています。
私たちは Tridion 2011 GA を使用しています。
次のコードは壊れています:
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 !?
}
ただし、次のメソッドに sg を渡す前に sg.Directory にアクセスすると、すべて正常に動作します。
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 }
}
完全なオブジェクトを返さない GetItems() メソッドで何かが起こっているように感じます。部分的に読み込まれたオブジェクトを次のメソッドに渡すと、元の参照が失われたかのようにプロパティを読み込むことができません。 .
誰かがここで何が起こっているのかを明らかにしてもらえますか? また、メソッド間で TOM.NET オブジェクトを渡すのは悪いことですか?
ありがとう