首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WCF DataContracts

WCF DataContracts
EN

Stack Overflow用户
提问于 2008-10-05 21:20:17
回答 1查看 9.1K关注 0票数 13

我有一个内部客户端托管的WCF服务-我们可以控制所有的客户端。因此,我们将使用数据合同库来消除对代理生成的需求。我想使用一些只读属性,并使用一些没有默认构造函数的数据契约。谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2008-10-05 21:31:17

只要将(非只读)字段标记为DataMember,而不是属性,只读属性就可以。与XmlSerializer不同,IIRC DataContractSerializer不使用默认的ctor -它使用单独的反射机制来创建未初始化的实例。除了在mono的"Olive“(WCF port)上,它确实使用了默认的ctor (目前或最近的某个时候)。

示例:

代码语言:javascript
复制
using System;
using System.IO;
using System.Runtime.Serialization;
[DataContract]
class Foo
{
    [DataMember(Name="Bar")]
    private string bar;

    public string Bar { get { return bar; } }

    public Foo(string bar) { this.bar = bar; }
}
static class Program
{
    static void Main()
    {
        DataContractSerializer dcs = new DataContractSerializer(typeof(Foo));
        MemoryStream ms = new MemoryStream();
        Foo orig = new Foo("abc");
        dcs.WriteObject(ms, orig);
        ms.Position = 0;
        Foo clone = (Foo)dcs.ReadObject(ms);
        Console.WriteLine(clone.Bar);
    }
}
票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/172681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档