我有以下面向.NET4.0的C#项目,它获取源代码文件,将其编译成一个程序集,然后执行该程序集中包含的一种类型的静态方法。只要我不在附加调试器的情况下启动程序,这就会按预期工作。在那种情况下,我在调用xmlSerializer.Serialize(sw,family);时遇到异常,更准确地说是System.NullReferenceException在System.TypeInitializationException里面在System.InvalidOperationException里面.如果我采用相同的程序,将源代码文件包含在项目中并直接编译到主程序汇编中,则无论是否附加调试器都
好的,我们正在使用我非常喜欢的Newtonsoft的JSON.NET产品。但是,我有一个简单的类结构,用于分层位置,大致如下所示......publicclassLocation{publicstringName{get;set;}publicLocationListLocations{get;set;}}//Note:LocationListissimplyasubclassofaList//whichthenaddsanIsExpandedpropertyforusebytheUI.publicclassLocationList:List{publicboolIsExpanded{
这是我的类(class):publicclassCommand{[XmlArray(IsNullable=true)]publicListTo{get;set;}}当我序列化这个类的一个对象时:vars=newXmlSerializer(typeof(Command));s.Serialize(Console.Out,newCommand());它按预期打印(省略了xmlheader和默认MS命名空间):当我使用这个xml并试图反序列化它时,我卡住了,因为它总是打印“Notnull”:vart=s.Deserialize(...);if(t.To==null)Console.Write
我正在使用不导入缩写的空xml元素的遗留应用程序。例如:坏空:好空:我知道实现此目标的解决方案,现在我将介绍:publicclassXmlTextWriterFull:XmlTextWriter{publicXmlTextWriterFull(Streamstream,Encodingenc):base(stream,enc){}publicXmlTextWriterFull(Stringstr,Encodingenc):base(str,enc){}publicoverridevoidWriteEndElement(){base.WriteFullEndElement();}}和客户
我正在尝试用C#优化解析器组合器。当序列化格式与内存中格式匹配时,一种可能的优化是只对要在该类型的一个实例或什至多个实例上解析的数据执行(不安全的)memcpy。我想编写代码来确定内存格式是否与序列化格式匹配,以便动态确定是否可以应用优化。(显然,这是一个不安全的优化,可能由于一大堆微妙的原因而无法工作。我只是在试验,不打算在生产代码中使用它。)我使用属性[StructLayout(LayoutKind.Sequential,Pack=1)]强制不填充并强制内存中的顺序与声明顺序匹配。我用反射检查该属性,但实际上所有这些都确认是“无填充”。我还需要字段的顺序。(我强烈希望不必为每个字段
我的类DataType有一个JsonConverter。当在Json中使用纯字符串作为DataType类型的属性值时,我想做一些特殊处理。在值是“完整”对象的情况下,我想进行“正常”反序列化。这是我的尝试publicoverrideobjectReadJson(JsonReaderreader,TypeobjectType,objectexistingValue,JsonSerializerserializer){if(reader.Value!=null&&reader.ValueType==typeof(string)){returnsomeSpecialDataTypeInsta
我试图在序列化XML时得到这个结果C:\test.txt1245我已经尝试过不同的事情了[Serializable][XmlRoot("Test")]publicclassTest{[XmlElement("Category")]publicListCategory=newList();}[Serializable][XmlRoot("Category")]publicclassCategory{[XmlElement("FileName")]publicstringFileName{get;set;}[XmlElement("Property")]publicListProperti
我有一个类维护对哈希表的引用并序列化/反序列化该哈希表。在调用SerializationInfo.GetValue之后,Hashtable没有完全反序列化,因为反序列化发生在IDeserialization回调期间。Hashtablehashtable=(Hashtable)info.GetValue("hash",typeof(Hashtable));我还在父类中实现了IDeserialization回调,但是Hashtable也没有完全反序列化。如果反序列化是从内到外发生的,我预计会是这样。我的问题是,从父类的OnDeserialization方法显式调用Hashtable.OnD
我有一个使用protobuf-net序列化/反序列化的复杂模型,我们有几个错误与这个不序列化默认值的“功能”。例子:[DataContract]classFoo{publicFoo(){//Valueforcedbyconstructorthis.Value=1;}//Buggy,whenValueissettozero[DataMember(Order=1)]publicdoubleValue{get;set}}当Value=0时,它不会被protobuf-net序列化,但是在反序列化过程中,构造函数强制Value为1(protobuf-net不会改变这个)。为了让它工作,我需要强制
在我们的客户端/服务器应用程序中,我们一直在使用BinaryFormatter进行序列化过程。出于性能原因,我们正在尝试迁移到protobuf-net(http://code.google.com/p/protobuf-net/)。我们的软件在客户端和服务器之间传输带有循环的巨大图表。现在我正在寻找一种方法来确保使用protobuf序列化和反序列化的数据与通常由BinaryFormatter处理的数据完全相同。逐位比较很简单:我使用BinaryFormatter序列化到一个文件。使用BinaryFormatter再次反序列化此文件。然后我使用ProtoBuf序列化到一个文件中。使用该文