草庐IT

可变序列

全部标签

c# - 在不重新评估序列的情况下获取 IObservable 中的前一个元素

在IObservable序列中(在ReactiveExtensionsfor.NET中),我想获取前一个元素和当前元素的值,以便我可以比较它们。我在网上找到了一个类似于下面的示例来完成任务:sequence.Zip(sequence.Skip(1),(prev,cur)=>new{Previous=prev,Current=cur})它工作正常,只是它对序列求值两次,我想避免这种情况。您可以看到使用此代码对其进行了两次评估:vardebugSequence=sequence.Do(item=>Debug.WriteLine("Retrievedanelementfromsequence

c# - 在 WebAPI 中对模型使用可序列化属性

我有以下场景:我正在使用WebAPI并根据模型将JSON结果返回给消费者。我现在有额外的要求将模型序列化为base64,以便能够将它们保存在缓存中和/或将它们用于审计目的。问题是,当我将[Serializable]属性添加到模型以便将模型转换为Base64时,JSON输出更改如下:模型:[Serializable]publicclassResortModel{publicintResortKey{get;set;}publicstringResortName{get;set;}}如果没有[Serializable]属性,JSON输出为:{"ResortKey":1,"ResortNam

c# - 将嵌套的 JSON 反序列化为 C# 对象

我正在从如下所示的API中获取JSON:{"Items":{"Item322A":[{"prop1":"string","prop2":"string","prop3":1,"prop4":false},{"prop1":"string","prop2":"string","prop3":0,"prop4":false}],"Item2B":[{"prop1":"string","prop2":"string","prop3":14,"prop4":true}]},"Errors":["String"]}我已经尝试了几种方法来在C#对象中表示此JSON(太多无法在此处列出)。我尝试过使

c# - 如何设计具有复杂初始化的不可变对象(immutable对象)

我正在学习DDD,并且遇到了“值对象”应该是不可变的声明。我知道这意味着对象状态在创建后不应更改。这对我来说是一种新的思维方式,但在很多情况下都是有道理的。好的,所以我开始创建不可变的值对象。我确保他们将整个状态作为构造函数的参数,我不添加属性setter,并确保不允许任何方法修改内容(仅返回新实例)。但现在我想创建这个包含8个不同数值的值对象。如果我创建一个具有8个数字参数的构造函数,我觉得它不会很容易使用,或者更确切地说-在传递数字时很容易出错。这不是好的设计。所以问题是:是否有任何其他方法可以使我的不可变对象(immutable对象)更好......,可以在C#中完成任何魔术来克

c# - 如何将 "zip"或 "rotate"列为可变数量的列表?

如果我有一个包含任意数量列表的列表,如下所示:varmyList=newList>(){newList(){"a","b","c","d"},newList(){"1","2","3","4"},newList(){"w","x","y","z"},//...etc...};...有没有办法以某种方式将列表“压缩”或“旋转”成这样的东西?{{"a","1","w",...},{"b","2","x",...},{"c","3","y",...},{"d","4","z",...}}显而易见的解决方案是做这样的事情:publicstaticIEnumerable>Rotate(thisI

c# - 序列化json时如何忽略JsonProperty(PropertyName = "someName")?

我有一些使用ASP.NetMVC的C#代码,它使用Json.Net来序列化一些DTO。为了减少负载,我使用[JsonProperty(PropertyName="shortName")]属性在序列化期间使用较短的属性名称。当客户端是另一个.Net应用程序或服务时,这非常有效,因为反序列化将对象层次结构重新组合在一起,使用更长更友好的名称,同时保持较低的实际传输负载。当客户端通过浏览器使用javascript/ajax时,问题就出现了。它发出请求,并获取json...但json使用的是缩短的不太友好的名称。如何让json.net序列化引擎以编程方式忽略[JsonProperty(Prop

c# - 字符串比较 == 是否仅因为字符串不可变才起作用?

我之前在比较两个字符串和它们的变量时有一个想法:stringstr1="foofoo";stringstrFoo="foo";stringstr2=strFoo+strFoo;//Eventhoughtstr1andstr2reference2different//objectsthefollowingassertionistrue.Debug.Assert(str1==str2);这是否纯粹是因为.NET运行时识别字符串的值是相同的并且因为字符串是不可变的使得str2的引用等于str1的引用?所以当我们执行str1==str2时,我们实际上比较引用而不是不是值?我原本以为这是语法糖的

c# - List<T> 的 XML 序列化 - XML 根

关于Stackoverflow(.Net2.0)的第一个问题:所以我试图返回一个包含以下内容的XML列表:publicXmlDocumentGetEntityXml(){StringWriterstringWriter=newStringWriter();XmlDocumentxmlDoc=newXmlDocument();XmlTextWriterxmlWriter=newXmlTextWriter(stringWriter);XmlSerializerserializer=newXmlSerializer(typeof(List));Listparameters=GetAll();

c# - 修改序列化 ASP.NET WebAPI 对象中的 xml 数组元素名称

在我的WebAPIController中返回对象列表时,我一直在努力输出自定义根xml元素。我的Controller方法看起来像这样:publicListGet(){returnrepository.GetProducts();}它会像这样呈现一个xml输出:Product1Product2我要改至但还没有找到这样做的方法。我尝试了DataContract的不同变体和DataMember属性无效。有谁知道除了包装我的List是否有办法做我想做的事?新类中的对象并返回它? 最佳答案 我知道您不喜欢包装器的想法,但有一种解决方案在某种程

c# - 有没有办法覆盖 DataContractJsonSerializer 序列化日期的方式?

有没有办法改变DataContractJsonSerializer序列化日期的方式?目前,它会将日期转换为如下形式:{"date":"/Date(1260597600000-0600)/"}我宁愿将它序列化为自1970年utc以来的毫秒数。这样,​​其他语言可以轻松处理json数据。 最佳答案 不,序列化程序本身没有钩子(Hook)可以做到这一点。但是您可以使用一些序列化回调来实现相同的行为。您将创建另一个数据成员(字符串类型),并且在数据被序列化之前,将调用[OnSerializing]回调来复制DateTime字段的值到弦一。关