4

クラスとサブクラスをシリアル化しようとしたときにキャッチされない例外の束と格闘した後、私の問題が何であったかを最終的に理解しました。一般的な C# 属性についてはまだよくわかりませんが、カスタム属性を作成するときに、プログラマーが属性の自動継承を有効にできることは理解しています。

[Serializable] の継承をオーバーライドする方法はありますか? 最初から行われなかった、および/またはそもそもこれを行うのが悪い考えである正当な理由はありますか? 上記の基本クラスのすべてのサブクラスをシリアライズ可能にしたいので、作成した新しいサブクラスに属性を追加する必要があるのはエレガントではないようです。

ありがとう!

4

1 に答える 1

5

そもそもそれが行われなかったのには、絶対に正当な理由があります。基本クラスがシリアライズ可能であるからといって、派生クラスが自然にシリアライズ可能であるとは限りません。

一体、objectシリアライズ可能です-シリアライズ可能性が継承された場合、.NETのすべてのクラスがシリアライズ可能になることを意味します:)

それも「オーバーライド」することはできません。すべてのクラスで指定する必要があります。実際、それは良いことだと思います。属性を追加するときは、クラスに対して精神的なチェックを実行し、それをシリアル化することが本当に理にかなっていることを確認する必要があります。

于 2010-08-10T19:44:00.447 に答える