はじめに
以下のようなコードを書いたところエラーが出てきてしまいました。
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 属性はインタフェースの実装では使用できません。