2017-06-04 18 views
0

私のプログラム内のすべてのコンポーネントに対して最も簡単なインターフェイスを持っているとします。インターフェイスを実装するすべてのクラスに属性を追加する

public interface IComponent 
{    
} 

私はプロジェクトのために書き込まれるすべての単一のコンポーネントは、このインタフェースを実装する必要があることを知っている、と私は、これらの構成要素のすべてがC#のBinaryFormatterを使用してディスクに保存されることを知っています。つまり、すべてのコンポーネントを[Serializable]属性で修飾する必要があります。今、この属性の追加を強制する方法はありますか?

これは不可能であると私は言うことができる様々なSOの質問を見つけることができるので、私は "今"と言うが、私は見つけることができるすべての質問は2008年からです。または、古い回答に記載されている回避策の1つを使用する必要がありますか?

+1

Stack Overflowで見つかる最も古いC#の質問は2008年7月です。2008年以前の質問に対する答えはどうやって見つかりましたか? C#仕様では多くの変更がありましたが、コンパイル時に属性がどのように使用されるかを変更するものはありません(ほとんどの場合、コンパイラ固有の例外はほとんどありません)。見つかった既存の回答の複製として質問を閉じるか、まったく削除するだけです。 –

+0

2008年にSOが開始されて以来、「以前の」部分は誤解を招いています。あなたのコメントが本当に答えであれば、私はその質問を終わらせます。何も変わらず、属性の装飾を施行する方法もありません。しかし、C#3.0と6.0から多くのことが変わってきたので、慎重に検討する必要がありました。 – Drakestar

答えて

0

IComponentのすべての実装をリフレクションを使用してライブラリから取り出し、それらにSerializable属性があるかどうかをチェックする単体テストを書くことができます。私は2008年以来、.NETで導入された何も新しいことは信じていない。

関連する問題