カスタム (PostSharp) 属性に制約を定義したいと思います。私の目標は、クラスXがYインターフェイスを実装していないが、それが私の属性を持っている場合、コンパイル時にエラーまたは警告を取得することです。
したがって、これは機能するはずです:
[MyAttributeOnlyForY]
public class X : Y { ... }
しかし、これはコンパイルプロセスを壊すはずです:
[MyAttributeOnlyForY]
public class X { ... }
それはどのように可能ですか?
理由
この属性はアスペクトのように機能し (これは PostSharp属性です)、織り込まれたクラスがこの属性に必要なすべての情報を提供することを確認したいと思います。
nullの結果を避けたい
(eventArgs.Instance as ILoggerServiceOwner)
コンプライアンス時間のチェックは良い習慣だと思います。
解決
私はここで完璧なスタートを見つけました: Validating attribute usage with PostSharp Aspects