1. ホーム
  2. c#

[解決済み] C#でオブジェクトがシリアライズ可能かどうかを確認する方法

2023-01-28 02:25:01

質問

C#のオブジェクトがシリアライズ可能かどうかを簡単にチェックする方法を探しています。

ご存知のように、オブジェクトをシリアライズ可能にするためには ISerializable インターフェイスを実装するか、あるいは [シリアライザブル] をクラスの先頭に置くことです。

私が探しているのは、クラスの属性を取得するためにクラスを反映させることなく、これをチェックする素早い方法です。インターフェースは ステートメントを使用することです。

Flardの提案を利用して、これは私が考え出したコードですが、より良い方法があれば教えてください。

private static bool IsSerializable(T obj)
{
    return ((obj is ISerializable) || (Attribute.IsDefined(typeof (T), typeof (SerializableAttribute))));
}

あるいは、オブジェクトの型を取得し、その型の IsSerializable プロパティを使用する方がよりよいでしょう。

typeof(T).IsSerializable

もしそのクラスが他のクラスを含んでいるならば、それらすべてをチェックするか、あるいは@pbが指摘したようにシリアライズしてエラーを待つことになるでしょうが。

どのように解決するのか?

の素敵なプロパティがありますね。 Type というクラスには IsSerializable .