我有一個字段,它是一個我想要序列化和反序列化的委託。反序列化一個類型爲委託的字段的類
它看起來像這樣:
public delegate bool DistanceEqualityStrategy (Distance distance1, Distance distance2);
[JsonObject(MemberSerialization.Fields)]
public partial class Distance
{
private double _intrinsicValue;
[JsonIgnore]
private DistanceEqualityStrategy _strategy;
public Distance(double passedInput, DistanceEqualityStrategy passedStrategy = null)
{
_intrinsicValue = passedInput;
_equalityStrategy = _chooseDefaultOrPassedStrategy(passedStrategy);
}
public Distance(Distance passedDistance)
{
_intrinsicValue = passedDistance._intrinsicValue;
_equalityStrategy = passedDistance._equalityStrategy;
}
private static DistanceEqualityStrategy _chooseDefaultOrPassedStrategy(DistanceEqualityStrategy passedStrategy)
{
if (passedStrategy == null)
{
return EqualityStrategyImplementations.DefaultConstantEquality;
}
else
{
return passedStrategy;
}
}
}
我無法理解什麼是真的反序列化該對象時打開。對象如何重建?當它嘗試重新創建對象時,它是否調用該類的特定構造函數?它的序列化很好,但是當重建對象時,它將委託設置爲null。
這使我得出結論,我不明白這種反序列化是如何工作的,因爲它似乎沒有使用構造函數。
有人可以向我解釋如何在不使用構造函數的情況下在反序列化中創建對象嗎?
不是最好顯示你的代碼和/或結構等,以便其他人不必實施他們的JetEye心靈力量..? – MethodMan
序列化代表是不可能的。這將如何工作? – SLaks
@SLaks說了什麼:_思考序列化委託會意味着什麼。什麼會通過電線發送?如果委託設置爲「空」,則沒有問題。但是如果委託在序列化代碼中被設置爲類實例的方法呢?這個實例是否也被序列化?如果不是,代表執行時代表什麼意思?正在執行的代碼是否會通過網絡進入您的進程以在您的實例上執行該方法?如果沒有電線怎麼辦?如果代表被序列化成文件會怎麼樣? –