I/Unity﹕ SerializationException: Field "Test" not found in class HogeFuga
Galaxy系端末でのみ上記のようにシリアライズのExceptionが発生したのでメモ
そもそもリフレクションとか使って色々あってInterfaceを実装したクラスをシリアライズしたかった。
そのため、パブリックなfieldではなくpropertyをシリアライズの対象とする必要があった。
その際、下記のようなコードだと端末によってExceptionが発生したのであった。。。
解決方法としては自動プロパティ使えよってことなんだけど、そもそもなんで自動プロパティ使わなかったかは・・・忘れたw(そもそもC#にまだ慣れてない)
他の解決方法としてDataContracやDataMember系のAttribute使うとイケそうなんだけどUnityとMonoのVersionの関係上これは使えそうになかった。
ダメだったコード
C#
[System.Serializable()]
public class HogeFuga : IFuga
{
private int test;
public int Test { get {return this.test;} set {this.test = value;} }
}
public interface IFuga
{
int Test { get; set; }
}
問題なく動作したコード
C#
[System.Serializable()]
public class HogeFuga : IFuga
{
public int Test { get; set; }
}
public interface IFuga
{
int Test { get; set; }
}
参考
- 同様の事例
- 自動プロパティのシリアライズ
- DataContract系記事
- DataContractリファレンス
- DataCotractor