Edited at

Galaxy端末系におけるSerializationException

More than 3 years have passed since last update.

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; }
}



参考