Tridion 2011 - Engine.GetObject重载

gle*_*lex 2 api tridion tridion-2011

我发现旧的VBScript API和.Net API之间存在以下差异:

在旧的VBScript API中,可以调用"TDSE.getObject"来检索通过webdav路径传递的Tridion对象,一个整数来选择如何打开它(只读,读取和写入等)以及发布的ID我们想要的蓝图的确切元素.

在新的.Net API中,我发现只有"Engine.GetObject",但它只接收TCM ID或元素的webdav路径.

我们的方案如下:在旧的VBScript代码中,getObject方法的这个重载用于避免在使用TCM ID而不是webdav路径时检测到一些权限问题,并且因为当您需要在不同环境之间复制代码时,它会更加轻松(请参阅DEV,PREPROD)例如,PROD,避免更改TCM ID.

所以我的问题是:

  1. 在新的.Net API中是否存在过载和旧的过载?
  2. 如果没有,有没有办法通过webdav检索项目,记住其中一些可以从他们的父项本地化和更改?(旧方法适用于此,如果您发送根webdav路径,它将检索本地对象,即使它们的名称与父项不完全相同)

谢谢!

Arj*_*bbe 5

您是否希望能够使用顶级项目的webdav URL,并指定从中获取项目的发布ID?

我会在Engine上创建一个扩展方法,为您执行此操作:

public static T GetObject<T>(this Engine engine, string webDavUrl, int publicationId)
    where T : IdentifiableObject
{
    [logic to retreive the item and then if needed
     get the correct tcm uri and get the intended item]

    return item as T;
}
Run Code Online (Sandbox Code Playgroud)

但是,这是一个非常昂贵的操作,因为你得到两个对象而不是一个.所以我不知道我是否经常使用这种方法.