双序列化定制

Sib*_*Guy 2 .net c#

我有以下课程:

public class SomeClass
{
   public double SomeValue {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我需要序列化它,XmlSerializer但是我需要在序列化期间将值乘以10并在反序列化期间将其除以10.有没有办法实现这个自定义逻辑?

Pad*_*ddy 6

这可能有点hacky,但不涉及序列化您的主要属性,而是为序列化提供虚拟属性,以适当地获取/设置主要属性的支持字段.

public class SomeClass 
{ 
   private double _someValue;

   [XmlIgnore()]
   public double SomeValue {
     get { return _someValue; }
     set {_someValue = value;}
   } 

   [XmlElement("SomeValue")]
   public double SomeValueSerialised
   {
      get { return _someValue * 10; }
      set { _someValue = value/10; }
   }
} 
Run Code Online (Sandbox Code Playgroud)

编辑:请注意,IXmlSerializable的实现可能是一种更简洁的方法,但它实际上取决于你班上的字段数量以及你感觉多么懒惰......