我正在使用 Tridion 2011 的事件系统在取消发布组件时执行一些额外的操作。我正在使用此处找到的代码发布相关组件。
我正在注册我的事件处理程序,如下所示:
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 事件中获取当前的(未)PublicationTarget?
任何人都可以提供任何帮助吗?