我正在使用Tridion 2011的事件系統在取消發佈組件時執行一些其他操作。我正在使用代碼here發佈相關組件。如何在Tridion 2011中獲取組件UnPublish事件的(un-)PublicationTarget?
我登記我的事件處理程序如下:
EventSystem.Subscribe<Component, UnPublishEventArgs>(
RemoveAndRepublish, EventPhases.Initiated);
...和我的處理方法如下:
public void RemoveAndRepublish(Component cmp, UnPublishEventArgs args,
EventPhases phase)
{
// ... code to locate related component, and perform required actions...
var instruction = new PublishInstruction(cmp.Session)
{
DeployAt = DateTime.Now,
RenderInstruction = new RenderInstruction(cmp.Session)
{
RenderMode = RenderMode.Publish
},
ResolveInstruction = new ResolveInstruction(cmp.Session)
{
IncludeComponentLinks = true
},
RollbackOnFailure = true,
StartAt = DateTime.MinValue
};
var target = args.Targets.FirstOrDefault();
PublishEngine.Publish(new[] {related}, instruction, new[] {target});
}
我的問題是,UnPublishEventArgs.Targets
屬性是一個IList<PublishingTarget>
,在運行時結果是一個List<TargetType>
,我需要得到一個PublicationTarget
對象才能夠調用PublishEngine.Publish(...)
。
我的問題是:有沒有辦法從UnPublish事件中獲取當前(un-)PublicationTarget?
任何人都可以提供任何幫助嗎?
OK,第二個段落聽起來更有前途...可能你給我舉個例子嗎? 'PublishEngine.Publish'方法需要IEnumerable'而不是'IEnumerable '。 –
Doh,完全沒有看到帶有'TargetType'數組的'PublishEngine.Publish()'的重載。謝謝! –