コードインスペクション:[MustDisposeResource] アノテーションは基底コンストラクターから継承されないため、明示的に配置する必要があります。
JetBrains.Annotations から [MustDisposeResourceAttribute] を使用して呼び出し側コードで リソース破棄を強制する場合、アノテーションが基本クラスのコンストラクターに配置されている場合、アノテーションは継承されないことに注意する必要があります。 この設計は、派生クラスがリソースの破棄を処理できるという事実によって動機付けられています。 他の場合には、派生クラスまたはそのコンストラクターに [MustDisposeResourceAttribute] のアノテーションを明示的に付けて、リソースを破棄する必要があることをユーザーに通知する必要があります。
public class HasNativeResources : IDisposable
{
[MustDisposeResource]
public HasNativeResources(object a)
{
// Do something with a
}
[HandlesResourceDisposal] public void Dispose() { }
}
class MayHaveNativeResources : HasNativeResources
{
public MayHaveNativeResources(object b) : base(b)
{
Console.WriteLine();
}
}
public class HasNativeResources : IDisposable
{
[MustDisposeResource]
public HasNativeResources(object a)
{
// Do something with a
}
[HandlesResourceDisposal] public void Dispose() { }
}
class MayHaveNativeResources : HasNativeResources
{
[MustDisposeResource]
public MayHaveNativeResources(object b) : base(b)
{
Console.WriteLine();
}
}
2026 年 6 月 12 日