コンポーネントの非公開時にいくつかの追加アクションを実行するために、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(...)
私の質問は: 現在の (un-)PublicationTarget を UnPublish イベントから取得する方法はありますか?
誰でも助けを提供できますか?