Tag: datacontract

将枚举序列化为string

我有一个枚举: public enum Action { Remove=1, Add=2 } 还有一堂课: [DataContract] public class Container { [DataMember] public Action Action {get; set;} } 当序列化容器实例的JSON我得到: {Action:1} (如果行动是删除)。 我想得到: {Action:Remove} (而不是int我需要ToStringforms的枚举) 我能做到这一点吗?

便携式类库:build议replace

我将.NET Framework C#类库移植到可移植类库中。 一个反复出现的问题是如何处理用[Serializable]属性修饰的类,因为这个属性不是可移植类库子集的一部分。 可移植类库子集中的序列化function似乎被DataContractAttribute覆盖。 为了在可移植类库中保留尽可能多的function,用[DataContract]属性replace[Serializable]是否足够(暗示所有需要序列化的字段和属性都需要用[DataMember]作为装饰[DataMember]好)? 什么(如果有的话),我不能用这种方法,我可以用[Serializable]应用做什么? 有没有一个侵入性的方法? 鉴于使用了[DataContract]和[DataMember] ,我正在考虑按照以下几行更改代码。 这种方法有没有明显的缺陷? 有没有什么办法可以减less冗长的相同事物? #if PORTABLE [DataContract] #else [Serializable] #endif public class SerializableClass : SerializableBaseClass { … #if !PORTABLE protected SerializableClass(SerializationInfo info, StreamingContext context) : base(info, context) { } #endif … #if PORTABLE [DataMember] #endif private Type1 _serializableField; #if PORTABLE [DataMember] #endif private Type2 SerializableProperty { get; […]

数据合同中的IsReference属性

DataContract中IsReference属性的用途是什么? 请求和响应如何适用此属性?

WCF:暴露只读的DataMember属性没有设置?

我有一个服务器端类,通过[DataContract]在客户端提供。 这个类有一个只读字段,我想通过一个属性提供。 然而,我无法这样做,因为似乎我没有被允许添加一个[DataMember]属性,而没有得到和设置。 所以 – 是否有一种方法来拥有一个[DataMember]属性而不需要setter? [DataContract] class SomeClass { private readonly int _id; public SomeClass() { .. } [DataMember] public int Id { get { return _id; } } [DataMember] public string SomeString { get; set; } } 或者解决scheme将使用[DataMember]作为字段 – (如图所示)? 试图这样做,但它似乎并不在意字段是只读的? 编辑 :是唯一的方法来通过黑客这样做只读属性? (不 – 我不想这样做…) [DataMember] public int Id { get { […]

何时使用DataContract和DataMember属性?

我很关心WCF中的DataContract属性。 据我所知,它被用于类似类的用户定义types的序列化。 我写了一个这样暴露在客户端的类。 [DataContract] public class Contact { [DataMember] public int Roll { get; set; } [DataMember] public string Name { get; set; } [DataMember] public string Address { get; set; } [DataMember] public int Age { get; set; } } 它正常工作,但是当我删除DataContract和DataMember它也能正常工作。 我不明白为什么它正常工作。 任何人都可以告诉我DataContract的实际用途是什么? 我的服务合同是这样的 [ServiceContract] public interface IRestServiceImpl { [OperationContract] Contact XmlData(string id); }

的命名空间

我无法find用于[DataContract]和[DataMember]元素的名称空间。 根据我发现,似乎join以下应该是足够的,但在我的情况下,它不是。 using System; using System.Runtime.Serialization; 这是我的代码片段: using System; using System.Runtime.Serialization; namespace MyNamespace { [DataContract] public class Tuple<T1, T2> { // A custom implementation of a Tuple //… //… } } 和我得到的错误: 无法findtypes或名称空间名称“DataContract”(是否缺lessusing指令或程序集引用?) 我没有使用正确的命名空间吗?

DataContract XML序列化和XML属性

是否有可能将此XML反序列化为标有DataContract属性的对象? <root> <distance units="m">1000</distance> </root> 正如你可能看到有“单位”属性。 我不相信这是支持的。 还是我错了?

如何控制.NET DataContract序列化,以便使用XML属性而不是元素?

如果我有一个标记为DataContract的类和一些标记有DataMember属性的属性,我可以很容易地将它序列化为XML,但它会创build如下输出: <Person> <Name>John Smith</Name> <Email>john.smith@acme.com</Email> <Phone>123-123-1234</Phone> </Person> 我更喜欢的是属性,比如… <Person Name="John Smith" Email="john.smith@acme.com" Phone="123-123-1234" /> DataMember属性允许我控制名称和顺序,但不能将其序列化为元素还是属性。 我环顾四周,发现DataContractFormat和IXmlSerializable但我希望有一个更简单的解决scheme。 什么是最简单的方法来做到这一点?