草庐IT

SERIALIZATION

全部标签

c# - 为什么必须用属性 [serializable] 标记一个类?

因为您可以将任何文档转换为字节数组并将其保存到磁盘,然后将文件重建为其原始形式(只要您有其文件名等的元数据)。为什么必须用[Serializable]等标记一个类?这是否只是相同的想法,“元数据”类型信息,所以当您将对象转换为它的类时,事物会被正确映射? 最佳答案 二进制序列化非常强大,它可以在不运行构造函数的情况下创建类的实例,并且可以在您声明为私有(private)的类中设置字段。常规代码当然不能这样做。通过应用[Serializable]属性,您可以明确允许它扰乱您的隐私部分。并且您隐式地只将该权限授予BinaryFormat

c# - 如何在 C# 中执行 System.Web.Script.Serialization?

如何在C#现代UI中执行此操作?varurl="http://ajax.googleapis.com/ajax/services/feed/load?q=http%3A%2F%2Fwww.digg.com%2Frss%2Findex.xml&v=1.0";varwc=newWebClient();varrawFeedData=wc.DownloadString(url);//YoucanuseSystem.Web.Script.Serializationifyoudon'twanttouseJson.NETJavaScriptSerializerser=newJavaScriptSer

c# - 如何将参数传递给反序列化json的构造函数

我在使用Newtonsoft.Json反序列化对象时将一些父实例传递给构造函数时遇到了一个小问题。假设我有以下类(class)publicclassA{publicstringStr1{get;set;}publicIListBs{get;set;}}publicclassB{publicB(Aa){//ashouldnotbenull!Console.WriteLine(a.Str)}}现在我像这样对对象a进行序列化和反序列化:Aa=newA()a.Bs=newList()a.Bs.Add(newB(a));a.Bs.Add(newB(a));a.Bs.Add(newB(a));va

c# - 检查类型是否可 blittable 的最快方法?

在我的序列化器/反序列化器中,我有以下片段:if(element_type.IsValueType&&collection_type.IsArray){try{GCHandleh=GCHandle.Alloc(array_object,GCHandleType.Pinned);intarrayDataSize=Marshal.SizeOf(element_type)*c.Count;vararray_data=newbyte[arrayDataSize];Marshal.Copy(h.AddrOfPinnedObject(),array_data,0,arrayDataSize);h.

c# - 强制类/方法的属性装饰

继我最近关于Large,ComplexObjectsasaWebServiceResult的问题之后.我一直在思考如何确保所有future的子类都可序列化为XML。现在,显然我可以实现IXmlSerializable接口(interface),然后将读取器/写入器插入其中,但我想避免这种情况,因为这意味着我需要在任何时候想要实例化读取器/写入器,并且99.99%的时间我将使用string所以我可能只写我自己的。但是,为了序列化为XML,我只是用Xml???属性(XmlRoot、XmlElement等),然后将其传递给XmlSerializer和StringWriter以获取字符串。这一

c# - Azure 服务总线序列化类型

随着我们转向面向服务的架构,我们已经开始研究使用WindowsAzure服务总线来替代我们当前的队列。大部分文档都很清楚;但是我很难确定BrokeredMessage在提供正文时使用哪种类型的序列化。例如,假设我实例化了一个BrokeredMessage对象,如下所示:ICommandsendMessageCommand=newSendMessageCommand{Title="Anewmessagetitle",Body="Anewmessagebody"};BrokeredMessagebrokeredMessage=newBrokeredMessage(sendMessageCo

c# - Dictionary<Key, Value> 上 .NET 二进制序列化的奇怪行为

我在.NET的二进制序列化中遇到了一个奇怪的行为,至少符合我的预期。在OnDeserialization回调之后,加载的Dictionary的所有项目都被添加到它们的父级。相比之下,List则采用另一种方式。这在现实世界的存储库代码中可能真的很烦人,例如,当您需要向字典项添加一些委托(delegate)时。请检查示例代码并观察断言。这是正常行为吗?[Serializable]publicclassData:IDeserializationCallback{publicListList{get;set;}publicDictionaryDictionary{get;set;}public

c# - 为什么我的属性声明 "field:"中需要 "[field:NonSerialized]"?

我在任何地方都找不到列为C#关键字的“字段”。有谁知道这件事的背景吗? 最佳答案 这是必要的,例如,如果您将事件标记为不可序列化。它指定了该属性适用的目标。它是属性目标语法的一部分。来自specification:attribute-target:fieldeventmethodparampropertyreturntype另请参阅NonSerializedAttribute的文档:ToapplytheNonSerializedAttributeclasstoanevent,settheattributelocationtofiel

c# - json.net 不序列化派生类的属性

我正在使用JSON.NET6.0.1。当我使用SerializeObject方法序列化派生类的对象时,它仅序列化基类的属性。这是代码片段:stringv=JsonConvert.SerializeObject(service,Formatting.Indented,newJsonSerializerSettings(){TypeNameHandling=TypeNameHandling.All});基类:[DataContract]publicabstractpartialclassDataEntity:IDataEntity,INotifyPropertyChanging,INoti

c# - 在 C# 中反序列化 JSON 数组(或列表)

基本代码如下:publicstaticstringDeserializeNames(){jsonData="{\"name\":[{\"last\":\"Smith\"},{\"last\":\"Doe\"}]}";JavaScriptSerializerser=newJavaScriptSerializer();nameListmyNames=ser.Deserialize(jsonData);returnser.Serialize(myNames);}//Classdescriptionspublicclassname{publicstringlast{get;set;}}publ