メインコンテンツまでスキップ

イベントに対して処理を追加する

Next Designのアプリケーションの動作に対し、エクステンションで処理を追加することができます。処理を追加する場合は、イベントハンドラを追加します。

イベントを購読する

次のようにマニフェストファイル(manifest.json)を用いて購読するイベントを定義し、イベントハンドラを実装します。

manifest.json
{
"name": "SampleExtension",
"main": "SampleExtension.dll",
"lifecycle": "project",

"extensionPoints" :
{
"events" :
{
"project" :
{
// プロジェクト保存前イベント
"onBeforeSave": "ProjectOnBeforeSave",
},
}
}
}

イベントハンドラは次のように実装します。

public void ProjectOnBeforeSave(IEventContext c, IEventParams p)
{
// 保存するプロジェクト名が "temporary" の場合、保存をキャンセルします
var projectBeforeSaveEventParams = p as ProjectBeforeSaveEventParams;
if ((projectBeforeSaveEventParams != null) && (projectBeforeSaveEventParams.Project.Name == "temporary"))
{
projectBeforeSaveEventParams.Cancel();
}
}

詳しくは下記を参照して下さい。

また、拡張ポイントについては拡張ポイントの定義を参照して下さい。

ExtensionPointsライブラリでイベントを購読する

ExtensionPointsライブラリを利用することで、マニフェストファイルでのイベント購読の定義の必要がなくなり、イベント購読のコードで非常にシンプルに定義できるようになります。

イベント購読はエクステンションのOnActivateメソッドでコードで実装します。

public class SampleExtensionEntryPoint : ExtensionBase
{
/// <summary>
/// アクティベート時の処理です。
/// </summary>
protected override void OnActivate()
{
// アプリケーション起動時のイベントを購読します
ExtensionPoints.Events.Application.RegisterOnAfterStart<ApplicationAfterStartEvent>();
}
}

購読したイベントはベースクラスから派生したイベントハンドラのクラスでOnHandleメソッドを実装することで処理を実現します。

/// <summary>
/// アプリケーション実行イベント
/// </summary>
public class ApplicationAfterStartEvent : ApplicationAfterStartEventHandlerBase
{
/// <summary>
/// イベントハンドラの処理です。
/// </summary>
/// <param name="c"></param>
/// <param name="p"></param>
protected override void OnHandle(IEventContext c, AfterStartEventParams p)
{
// イベント処理を実装します
Output.WriteLine(ExtensionName, $"Events: ApplicationAfterStart Event. Version: {App.Version}");
}
}

詳しくは下記を参照して下さい。