便宜上、コンテンツ タイプをモジュール内の移行の一部として作成できます。これは、有効な場合にのみ実行されます。それは次のようになります...
//Inside of your migration file...
public int UpdateFrom1(){
ContentDefinitionManager.AlterTypeDefinition("Package", cfg=> cfg
.Creatable()
.WithPart("YourCustomPart")
.WithPart("CommonPart")
.WithPart("Whatever other parts you want..."));
return 2;
}
モジュールを無効にするときにこのコンテンツ タイプを削除するのは、ユーザーにとって予期しないことかもしれないため、注意が必要です。「パッケージ」は別パーツを付けて使いたいタイプなのかもしれませんね。また、モジュールを無効にせずに手動で削除した場合、そのイベントに応答するコードを実際に書くことはできません。私が知っている唯一の信頼できるものは IFeatureEventHandler です。これにより、管理者がモジュールを無効にすると、コンテンツ タイプを削除できます...
public PackageRemover : IFeatureEventHandler {
private readonly IContentDefinitionManager _contentDefinitionManager;
public PackageRemover(IContentDefinitionManager contentDefinitionManager){
_contentDefinitionManager = contentDefinitionManager;
}
public void Installed(Feature feature){}
public void Enabling(Feature feature){}
public void Enabled(Feature feature){}
public void Disabling(Feature feature){
_contentDefinitionManager.DeleteTypeDefinition("Package");
}
public void Disabled(Feature feature){}
public void Uninstalling(Feature feature){}
public void Uninstalled(Feature feature){}
}