イベントに対して処理を追加する
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}");
}
}
詳しくは下記を参照して下さい。