我发现旧的 VBScript API 和 .Net API 之间存在以下差异:
在旧的 VBScript API 中,可以调用“TDSE.getObject”来检索通过 webdav 路径传递的 Tridion 对象,一个整数来选择如何打开它(只读,读写等)以及包含我们想要的蓝图的确切元素的出版物。
在新的 .Net API 中,我只找到“Engine.GetObject”,但它只接收元素的 TCM ID 或 webdav 路径。
我们的场景如下;在旧的 VBScript 代码中,这种 getObject 方法的重载用于避免在使用 TCM ID 而不是 webdav 路径时检测到的一些权限问题,因为当您需要在不同环境之间复制代码时,它会更加方便(参见 DEV,PREPROD和 PROD),避免更改 TCM ID。
所以我的问题是:
- 在新的 .Net API 中是否有像旧的那样重载?
- 如果没有,是否有一种方法可以通过 webdav 检索项目,同时记住其中一些项目可以本地化并从其父级更改? (旧方法适用于此,如果您发送根 webdav 路径,即使它们的名称与父对象的名称不完全相同,它也会检索本地对象)
谢谢!
最佳答案
您是否希望能够使用顶级项目的 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;
}
但是,这是一项相当昂贵的操作,因为您得到的是两个对象而不是一个。所以我不知道我是否会经常使用这种方法。
关于api - Tridion 2011 - Engine.GetObject 重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10614241/