我希望我的Guid可以被序列化为一个短的Guid形式(参见这里)。为了完全兼容,我希望ShortGuid类序列化成短格式,而不是长格式。
我尝试过使用自定义序列化,但似乎只能将整个对象序列化为包含字符串的对象,而不是短字符串。这是我尝试过的内容:
我收到的序列化字符串长这样:
我尝试过使用自定义序列化,但似乎只能将整个对象序列化为包含字符串的对象,而不是短字符串。这是我尝试过的内容:
[Serializable]
public class ShortGuid : ISerializable
{
public Guid Guid { get; }
protected ShortGuid(SerializationInfo info, StreamingContext context)
{
Guid = Decode(info.GetString("Guid"));
}
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("Guid", Encode(Guid));
}
}
这个可以实现,但如果我对它进行序列化:
var guid = new ShortGuid(Guid.NewGuid());
var str = JsonConvert.Serialize(guid);
我收到的序列化字符串长这样:
{ Guid: "xxxxxxxxxxxxxxxxxx" }
我想要的序列化字符串仅为
xxxxxxxxxxxxxxxxxx
我已经尝试了很多方法,但是无法让这个东西工作。应该怎么做呢?
注意:我不希望只在JsonConvert上运行成功,这只是一个例子。我希望这个类始终能够被正确序列化。
var str = JsonConvert.Serialize(guid.Guid);
,您有什么看法? - Ehsan Sajjad