Tag: datacontract

使用URI和Da​​taContract类参数编写Web服务方法

如何获取Web服务方法来访问URI和复杂POST数据中的参数? 我有一个Web服务方法,在URI中有一些参数: “/api/{something}/{id}” 我还有一个标有DataContract / Member属性的类,我希望webservice方法接受它。 请注意,我的类包含一个也标有DataContract / Member属性的子类。 [DataContract] public class MoreData{ [DataMember] public string SomeString { get; set; } [DataMember] public SubClass SubData {get; set;} } 我的方法声明如下: [OperationContract] [WebInvoke( Method = “POST”, UriTemplate = “/api/{something}/{id}”)] public MyWebSvcRetObj Update(string something, string id) 如何让我的Update方法也接受MoreData类? 我已经能够编写如下方法: [OperationContract] [WebInvoke( Method = “POST”)] public MyWebSvcRetObj Update(MoreData IncomingData) 但只有当URI没有指定任何参数时,URI才会显示 […]

如何将C#WCF DataContract序列化/反序列化到XML或从XML序列化

我正在开发一个WCF服务,它将由多个不同的客户端应用程序使用。 为了使一个function起作用,服务器需要将XML文件读入C#DataContract,然后将其传递给相关客户端。 据我所知,从MSDN网站,这是可能的,但我找不到任何完整的例子。 特别是,该网站谈到了一个“流”参数,我还没有完成。 我的数据协定有一个属性字段,它是另一个具有多个简单属性字段的数据协定的列表。 例如 [DataContract] public class MyClass1 { [DataMember] public string name; [DataMember] public int age; } [DataContract] public class MyClass2 { [DataMember] public List myClass1List; } 我的课看起来像这样。

使用DataContractSerializer进行自定义序列化

我目前正在为我的DataSet使用包装类,以实现自定义序列化。 我想使用DataContractSerializer (更像是必须使用它)但仍然支持自定义序列化。 问题是[DataContract]和[Serializable]属性看起来并不那么好…我怎么能覆盖序列化,并支持BOTH DataContract和ISerializable序列化? 包装器DataSet类的代码带到这里: [Serializable()] [System.Runtime.InteropServices.ComVisible(false)] public class TestDatasetWrapper : TestDataSet, ISerializable { public TestDatasetWrapper() : base() {} protected TestDatasetWrapper(SerializationInfo info, StreamingContext context) { SerializationHelper.DeserializeTypedDataSet(info, this); } public override void GetObjectData(SerializationInfo info, StreamingContext context) { SerializationHelper.AddTypedDataSetObjectData(info, this); } } 谢谢!

通常被接受的方法来避免每个派生类的KnownType属性

是否有一种普遍接受的方法来避免在WCF服务上使用KnownType属性? 我一直在做一些研究,看起来有两种选择: 数据合同解析器 NetDataContractSerializer 我不是每次添加新类型时都必须静态添加KnownType属性的忠实粉丝,因此想要避免它。 是否应该使用第三种选择? 如果是这样,它是什么? 如果没有,上述两个选项中的哪一个是正确的方法? 编辑 – 使用方法 第三种选择是使用reflection [DataContract] [KnownType(“DerivedTypes”)] public abstract class FooBase { private static Type[] DerivedTypes() { return typeof(FooBase).GetDerivedTypes(Assembly.GetExecutingAssembly()).ToArray(); } }

使用反序列化IEnumerable 不起作用

相当新的Json.net并尝试以下简单示例序列化然后解除对象获取以下错误: using Microsoft.VisualStudio.TestTools.UnitTesting; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.Text; using System.Collections; namespace Timehunter.Base.ServicesTests { /// /// Summary description for JsonError /// [TestClass] public class JsonError { [TestMethod] public void TestMethod1() { JsonSerializerSettings serializerSettings = new JsonSerializerSettings() { DateFormatHandling = DateFormatHandling.IsoDateFormat, DateParseHandling = Newtonsoft.Json.DateParseHandling.DateTimeOffset }; Act.Activities acts = new Act.Activities(); […]