Windows Phone 7/8 で protobuf-net を使用して型をシリアル化/逆シリアル化することは可能ですか?
以下のコードを試してみましたが、コンストラクターのスキップがサポートされていないようです (つまり、UseConstructor = false) ため、パラメーターなしのコンストラクターを作成しましたが、「メソッドにアクセスしようとして失敗しました: Wp7Tests.ImmutablePoint.set_X(System.Double )"
public class ImmutablePoint
{
public double X { get; private set; }
public double Y { get; private set; }
public ImmutablePoint() {}
public ImmutablePoint(double x, double y)
{
X = x;
Y = y;
}
}
public sub Test()
{
ImmutablePoint pt = new ImmutablePoint(1, 2);
var model = TypeModel.Create();
var ptType = model.Add(typeof(ImmutablePoint), false);
ptType.AddField(1, "X");
ptType.AddField(2, "Y");
IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();
using (var stream1 = new IsolatedStorageFileStream("test.bin", FileMode.Create, store))
{
try
{
model.Serialize(stream1, pt);
}
catch (Exception e)
{
Debugger.Break();
}
}
const double EPSILON = 0.001;
using (var stream1 = new IsolatedStorageFileStream("test.bin", FileMode.Open, store))
{
try
{
ImmutablePoint ptDeSer = (ImmutablePoint) model.Deserialize(stream1,null, typeof(ImmutablePoint));
Debug.Assert(Math.Abs(pt.X - ptDeSer.X) < EPSILON);
Debug.Assert(Math.Abs(pt.Y - ptDeSer.Y) < EPSILON);
}
catch (Exception e)
{
Debugger.Break();
}
}
}