はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【C#】インターフェースで定義されているメンバーを実装するときにConditional属性は使えない

はじめに

以下のようなコードを書いたところエラーが出てきてしまいました。

public interface IProgram
{
    public void Hoge();
}

public class Program : IProgram
{
    [Conditional("ENABLE_HOGE")]
    public void Hoge()
    {
        Console.WriteLine("HOGE");
    }
}

[CS0629] 条件付きメンバー 'Program.Hoge()' はインターフェイス メンバー 'IProgram.Hoge()' を型 'Program' で実装できません

このエラーについて紹介したいと思います。

原因

どうやらインターフェースで定義されているメンバーを実装する際に[Conditional]は付けられないようです。

Conditional member 'member' cannot implement interface member 'base class member' in type 'Type Name'

The Conditional attribute cannot be used on the implementation of an interface.

// DeepL翻訳
条件付きメンバ 'member' は、型 'タイプ名' のインタフェース・メンバ 'ベース・クラス・メンバ' を実装できません。

Conditional 属性はインタフェースの実装では使用できません。

Compiler Error CS0629 - C# | Microsoft Learn