예제 #1
0
        public ActionBase Deserialize(XElement xAction)
        {
            ActionBase action;

            if (xAction.Name.LocalName != "Unknown")
            {
                var actionCode = XActionNames.FromNodeName(xAction.Name.LocalName);
                action = _factory.Create(actionCode);
            }
            else
            {
                action = new ActionUnknown((ActionCode)xAction.RequiredByteAttribute("type"));
            }
            action.AcceptVisitor(this, xAction);
            return(action);
        }
예제 #2
0
 ActionBase IActionVisitor <XElement, ActionBase> .Visit(ActionUnknown action, XElement xAction)
 {
     action.Data = XBinary.FromXml(xAction.Element("data"));
     return(action);
 }
예제 #3
0
 XElement IActionVisitor <XElement, XElement> .Visit(ActionUnknown action, XElement arg)
 {
     return(new XElement("Unknown",
                         new XAttribute("type", (byte)action.ActionCode),
                         XBinary.ToXml(action.Data)));
 }