草庐IT

Pickle反序列化

全部标签

将对象序列化到文件时的 C# 最佳实践

我正在构建一个小型应用程序,它需要将对象保存到文件中以保存用户数据。关于我对此文件的序列化,我有两个问题:我正在创建的对象具有一些公共(public)属性和一个事件。我将[Serializable]属性添加到我的对象,然后意识到我无法序列化其中包含事件的对象。然后我发现我可以在我的事件[field:NonSerialized]上添加一个属性,它就会起作用。这是执行此操作的最佳方法,还是我应该尝试在不包含任何事件的情况下构建我的可序列化对象?我正在序列化的对象保存了一些关于应用程序的用户设置。这些设置不够敏感,无法在文件中加密它们,但我仍然不希望在不打开我的应用程序的情况下手动篡改它们。

c# - LINQ IEnumerable 的序列化结果

我有一个简单的值类型:[Serializable]privatestructTimerInstance{publicTimerInstance(stringstr,longnTicks){_name=str;_ticks=nTicks;}privatereadonlystring_name;privatereadonlylong_ticks;publicstringName{get{return_name;}}publiclongTicks{get{return_ticks;}}publicoverridestringToString(){returnstring.Format("{0

c# - BinaryFormatter 序列化和反序列化线程安全吗?

引用this回答一个问题。这可以重写为:privatestaticBinaryFormatterformatter=newBinaryFormatter();publicstaticTDeepClone(thisTa){using(MemoryStreamstream=newMemoryStream()){formatter.Serialize(stream,a);stream.Position=0;return(T)formatter.Deserialize(stream);}}所以避免为每次调用构造(和GC'ing)一个新的BinaryFormatter?此代码路径经常受到攻击,因

c# - 如何序列化 IList<T>?

我有一个返回IList的OR映射器(iBatis.Net)。//IListQueryForList(stringstatementName,objectparameterObject);vardata=mapper.QueryForList(statement,parameters);我正在尝试在网络服务中使用它并希望以1:1的比例返回数据。当然,我不能在WebMethod中返回IList,因为它是一个接口(interface),因此不可序列化。我发现映射器实际上返回的是一个列表。但我不敢将其转换为List,因为映射器的内部工作原理在未来的版本中可能会发生变化(而且感觉很脏)。我也应该

c# - 如何在 json.net 中将空字符串反序列化为枚举

我正在将json属性反序列化为一个枚举,但是当属性为空字符串时,我在处理情况时遇到了问题。Errorconvertingvalue""totype'EnrollmentState'我正在尝试反序列化requiredItem中的state属性。{"currentStage":"Pre-Approved","stages":["Applicant","Pre-Approved","Approved","Enrolled"],"requiredItems":[{"id":1,"name":"Documents","state":""},{"id":2,"name":"EligibilityV

c# - XML 序列化错误 : 2 types both use the XML type name, 'Relationship',来自命名空间 ''

我在通过XML进行序列化时遇到问题,因为2个类使用一个类(尽管类不同!)称为关系。我尝试使用XML属性用另一个名称装饰其中的一个类,但它仍然给我以下错误:{"Types'SiteServer.Relationship'and'LocalServer.Relationship'bothusetheXMLtypename,'Relationship',fromnamespace''.UseXMLattributestospecifyauniqueXMLnameand/ornamespaceforthetype."}这是我的2个类(class),有人知道为什么吗??我使用了错误的属性吗?它似

c# - 反序列化具有以数字开头的某些属性名称的json

JSON数据看起来像这样[{"market_id":"21","coin":"DarkCoin","code":"DRK","exchange":"BTC","last_price":"0.01777975","yesterday_price":"0.01770278","change":"+0.43","24hhigh":"0.01800280","24hlow":"0.01752015","24hvol":"404.202","top_bid":"0.01777975","top_ask":"0.01790000"}]注意这里的这3个属性24high、24hhlow和24hvol您

c# - 使用 Json.Net 反序列化时出现错误 "Cannot deserialize the current JSON array"

我有一个字符串:[{"key":"key1","value":"{'Time':'15:18:42','Data':'15:18:42'}","duration":5},{"key":"key1","value":"{'Time':'15:18:42','Data':'15:18:42'}","duration":5}]我的模型类:publicclassCPacket{publicstringkey{get;set;}publicstringvalue{get;set;}publicintduration{get;set;}}我使用Json.Net,我想将下面的字符串转换为Json对象

c# - 您如何知道何时通过 XML 序列化加载?

我正在尝试通过XML序列化加载对象树,此时它将加载对象,并非常愉快地创建树。我的问题围绕着这些类支持一定程度的审计这一事实。我希望能够在每个对象完成加载后调用一些方法。为了论证,假设我有一个相当通用的对象树,在不同级别有不同的类,例如:123AnyStreet456HighStreet有没有什么方法可以使用默认的序列化程序(类似于您可以创建类似ShouldSerializeFoo的方法)来确定每个对象的加载何时完成?编辑:我应该指出,暴露类似于OnLoaded()方法的明显情况,我可以在反序列化后调用,这让我觉得是一件“坏事”.编辑2:为了便于讨论,这是我当前的hack“方法”,适用于

c# - 在 C# 中,如何将旧对象中的 XML 反序列化为更新后的对象并忽略丢失的 xml 元素?

我有一个自定义设置文件,我使用XmlSerializer对其进行序列化/反序列化。我的对象定义中没有定义模式和序列化标签,只是直接对象序列化(尽管我会在需要时添加它们)。我的问题是我需要向对象添加数据成员。如果我这样做,我知道旧的设置文件将不会反序列化。有没有一种方法可以为添加的成员指定默认值,或者如果XML中缺少它们,可以通过一些简单的方法忽略它们? 最佳答案 来自MSDNBestPracticesToensureproperversioningbehavior,followtheseruleswhenmodifyingatype