ITypeSymbol
をチェックして、シリアル化可能かどうかを確認する必要があります。そこITypeSymbol
にはIsSerializable
プロパティはませんか私はコンパイラAPIでの知っている拡張メソッドは、これを行うには、ので、ここで私が思い付くことができる最高の推測です:ITypeSymbolがコンパイラAPIでシリアル化可能かどうかを確認
IsValueType
がtrueの場合ならば、それは- 直列化可能です型は
GetAttributes()
からの戻り値に[SerializableAttribute]
を持ちます。それはシリアライズ可能です ISerializable
インターフェイスを実装している場合は、シリアル化可能です。
私には他の可能性がありますか?
具体的な型を知るには、オブジェクトのGetType()メソッドを使用する必要があります。その後、有効なType.IsSerializableがあります。奇妙な質問btw、私は何かが不足しているようなにおいがする。 –
@hansPassantここでReflection APIは使用できません。これはコンパイラAPIであり、 'ITypeSymbol'の' Type'へのアクセス権がありません(少なくとも私が知っているものはありません)。それが問題です。 – JasonBock
Hmya、それはもちろん不可能です。実行時にこれがうまくいくことを望むだけです。ランタイム例外はプログラマーを正直に保ちますが、最終的なプログラムが良好な診断で失敗し、誰かが是正措置を取ることができることを確認してください。 –