C # 직렬화 관행 사용자 지정 유형과 함께 개체의 실천
-
12-12-2019 - |
문제
예 :
public class Temperature
{
protected double _celcius;
public Temperature(){}
public Temperature(double celcius)
{
_celcius = celcius;
}
public double Celcius
{
//sets & returns temperature in Celcius
}
public double Fahrenheit
{
//sets & returns temperature in Fahrenheit
}
}
.
및 Mass
등에 유사한 것.
i 또한 사용자 정의 객체, 예를 들어 이러한 사용자 정의 유형을 속성으로 사용하는 Planet
를 사용합니다.
[Serializable]
public class Planet
{
public int PositionFromSun;
public Mass Mass;
public Temperature Temperature;
}
.
Planet
및 Mass
가 미래에 약간 변경 될 수 있다는 것을 고려하여 Temperature
를 직렬화하는 가장 좋은 방법은 무엇입니까 (예 : Kelvin
에 Temperature
추가)?Mass
와 같은 사용자 지정 인터페이스에서 상속 된 Temperature
및 IQuantity
가 있어야합니다.
해결책
@ adriano의 의견 ...에이것은 내가 필요한 것입니다.
예, 필요에 따라 많은 공개 속성을 추가 할 수 있습니다.비교를 위해서는이 게시물을 여기에서 볼 수 있도록 무엇인가?XMLSerializer와 BinaryFormatter의 차이점
다른 팁
바이너리 직렬화는 추가되고 유형으로 제거되는 속성에 대해 매우 까다 롭습니다.버전의 허용 Serializer (예 : XML 기반 Serialisers)를 사용하는 경우 클래스 버전간에 안정적으로 직렬화 / deserialise를 사용할 수 있습니다.
protobuf.net 직렬화를 사용하여 고려해야 할 수 있습니다.성숙한, 매우 빠르고 버전 관용.
제휴하지 않습니다 StackOverflow