开发者

How do I serialise Lambdas and Event delegates when Tombstoning on the Windows Phone 7?

I've been using the Game State Management sample which has worked so far. I've hit a snag though: when Tombstoning, the screens are serialised; the only trouble is, the MessageBoxScreen has event handlers for Accepted and Cancelled.

What's the best way to serialise these? I did a bit of research on using Expression Trees but this seemed overly complex for what I wanted to do.

How do you seri开发者_运维技巧alise these? Or... What alternative approach do you use to save the state of a screen that contains delegates?


I'd definitely steer clear of attempting to serialize anything remotely resembling a lambda, or for that matter, named methods. Remember: you're storing state, and nothing else.

Depending on how far and wide your various assignments to these delegates are, you might be able to get away with maintaining a Dictionary<String, WhateverDelagateType>, serializing the keys and looking up the callbacks after deserialization.

Another thing to consider--I'm no expert, but reading between the lines it sounds as if you're working towards tombstoning a very temporary modal dialog. Do you really want that? You might be better off bringing your user right to the high scores table, or whatever follows your dialog, on his/her return.


I decided against this. I instead persists game flow as a kind of 'flow chart'.

The flow chart is declared in code and has properties 'LastShape' and 'LastResultFromShape'.

In my code, I rebuild the flow chart definitions each time, something like this:

flowChart.AddShape( "ShowSplash" );
flowChart.AddLine( "MainMenu", ()=>lastResult=="Clicked" || lastResult=="TimedOut");

flowChart.AddShape( "MainMenu");
flowChart.AddLine( @"ShowOptions", ()=>lastResult=="OptionsClicked");
flowChar.AddLine( @"ShowSplash", ()=>lastResult==@"TimedOut");

etc.etc.

The flow goes from the top down, so 'AddLine' relates to the last shape added.

After tombstoning, I just read the last shape and the last result and decide where to go in the flowchart based on that.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜