WCF 服务默认值

2023-12-26

我的 WCF 服务有以下数据协定类:

[DataContract(Name = "MyClassDTO")]
public class MyClass
{
    private string name = "Default Name";

    [DataMember]
    public string Name
    {
        get { return name; }
        set { name = value; }
    }
}

当我使用 Visual Studio 的添加服务引用功能生成 WCF 服务引用时,生成的 DataContract 看起来像这样:

[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name = "MyClassDTO", Namespace = "xxx")]
[System.SerializableAttribute()]
public partial class MyClassDTO : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
{

    [System.Runtime.Serialization.OptionalFieldAttribute()]
    private string NameField;

    [System.Runtime.Serialization.DataMemberAttribute()]
    public string Name
    {
        get
        {
            return this.NameField;
        }
        set
        {
            if ((object.ReferenceEquals(this.NameField, value) != true))
            {
                this.NameField = value;
                this.RaisePropertyChanged("Name");
            }
        }
    }
}

这意味着默认值“默认名称”会丢失并发生以下行为:

MyClassDTO mcdto = new MyClassDTO();
serviceClient.DoSomething(mcdto);


[OperationContract]
void DoSomething(MyClass mc){
   mc.Name //<--   == null    but I want it to be "Default Name"
}

有没有一种方法可以以这种方式配置数据协定,使定义的默认值“默认名称”不会丢失?

附加信息: 我使用服务参考without在引用的程序集中重用类型,例如在客户端类 MyClassDTO生成一个不知道服务器端类MyClass


到目前为止我发现的唯一可能的(但丑陋的,因此不是很令人满意的)解决方案是使用OnDeserializing属性在反序列化开始时设置默认值,并使用字段的设置器来确定是否应该真正设置所传递的值。

   [DataContract(Name = "MyClassDTO")]
    public class MyClass
    {
        private string name;

        public MyClass()
        {
            Init();
        }

        [DataMember]
        public string Name
        {
            get{ return name; }
            set
            {
                if (!String.IsNullOrEmpty(value))
                {
                    name = value;
                }
            }
        }

        private void Init()
        {
            name = "Default Name";
        }

        [System.Runtime.Serialization.OnDeserializing]
        private void OnDeserializing(StreamingContext ctx)
        {
            Init();
        }
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WCF 服务默认值 的相关文章

  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • IIS 7.5 托管的 WCF 服务仅针对大型请求抛出 EndpointNotFoundException 和 404

    我有一个 WCF REST 服务托管在 IIS 7 5 Windows 2008 R2 上 该服务按预期工作 除非客户端尝试发送大于 25 MB 的消息 具体来说 当发送大小约为 25 MB 的消息时 服务会正确接收并处理消息 而当发送大小
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • 引用的程序集自动由 Visual Studio 替换

    我有 2 个项目 一个可移植类库和一个常规单元测试项目 在可移植类库中 我使用 NuGet 来引用 Microsoft BCL 可移植包 它附带 2 个程序集 System Threading Tasks dll and System Ru
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • 无法在 x86 ubuntu linux 上添加自定义系统调用

    我对此很陌生 刚刚了解内核 我正在尝试添加对内核 4 20 4 的自定义调用 这是我所做的步骤 首先我创建文件 kernel printmsg c 包含代码 include
  • 在 Windows 7 上安装 Cabal-dev

    我正在尝试在 Windows 7 上安装 Cabal dev 我已经设法通过使用以下方法解决了无法构建网络的问题 cabal install constraint network installed cabal dev 但是后来我得到了这个
  • Spring Mvc java.io.FileNotFoundException - ApplicationContext.xml

    applicationContext xml 位于 WEB INF 文件夹中 为什么我收到此错误 org springframework beans factory BeanDefinitionStoreException IOExcept
  • IE9 开发者工具中的 IE9 兼容性视图是什么?

    我正在查看 IE 9 开发人员工具 当我单击浏览器模式时 我会看到一个列表 IE 7 IE 8 IE 9 IE 9 Compatibility View 那有什么作用 IE 9 和 IE 9 兼容性视图有什么区别 The main区别在于用
  • kali linux python3-pip 面临的问题

    我面临这个问题 sudo apt get install python3 pip Reading package lists Done Building dependency tree Reading state information D
  • 逆向工程 iWork '13 格式

    Apple iWork 套件的早期版本使用非常简单的文档格式 文档是资源包 文件夹 压缩或未压缩 该捆绑包包含一个index apxl z 以专有但相当容易理解的模式描述文档结构的文件 iWork 13 完全重做了格式 文档仍然是捆绑包 但
  • 如何在 Asp.net MVC 中使用代码优先方法更新模型和数据库

    我是新来的mvc 我创建了一个MVC应用程序 我在其中使用过code first方法 现在我有两张桌子Deal and Comment 现在我想添加一个新表Category在数据库和新列中类别ID in Deal table 我如何更新数据
  • Android PICASSO - 图像未加载到 ImageView + 停止发生以下所有语句

    背景 我的 java 文件中有一个 Picasso 语句 它读取 JSON 然后将该数据格式化到屏幕上 问题 读取 JSON 后 Picasso 不会将图像从 URL 加载到 ImageView 而是停止此后发生的所有语句 例如在 Text
  • 从 bmp 中获取平均颜色

    我正在为第二个屏幕开发一个任务栏 类似于displayfusion 但是 我很难从图标中获得正确的平均颜色 例如 Google Chrome 当我将其悬停在主任务栏上时 它的背景会变成黄色 使用我的代码它会变成橙色 红色 现在看起来是这样的
  • 设计函数 f(f(n)) == -n

    上次面试时我被问到的一个问题 设计一个函数f 这样 f f n n Where n是32位的有符号整数 你不能使用复数算术 如果您无法为整个数字范围设计这样的函数 请为尽可能最大的范围设计它 有任何想法吗 你没有说他们期望什么样的语言 这是
  • 覆盖paint或paintComponent时需要恢复图形原始状态

    我意识到大多数Java代码都覆盖了paint或paintComponent 它们中的大多数在改变图形对象的状态后并没有恢复图形对象的旧状态 例如 setStroke setRenderingHint 我想知道在从方法返回之前恢复图形对象的旧
  • 我们可以关闭终结器吗?

    由于无法保证终结器何时运行以及是否会运行 而且如今终结器几乎被认为是一种气味 有什么方法可以说服 JVM 完全跳过所有终结过程吗 我问这个问题是因为我们有一个庞大的应用程序 当它迁移到较新的 JVM 现阶段不确定是哪个 时 它会因为看起来非
  • twig - 在 for 循环中构建数组

    是否可以迭代地用值填充树枝数组 for question in questions set multipleChoiceArray for multipleChoice in question multipleChoiceAnswers s
  • 如何构建正确的 SPARQL 查询

    我需要使用 SPARQL 查询和 dbpedia org 获取曾经为足球队效力过的所有球员 我可以让当前的团队成员使用http dbpedia org sparql http dbpedia org sparql和这个查询 PREFIX g
  • Shiny/R 错误:路径应该是项目目录中的文件

    我的 Shiny 应用程序将在本地运行 但当我尝试部署到shinyapps io 时 它不会运行 我通过删除路径中的 点 暂时解决了该问题 csv file data lt read csv Users JMJC Desktop bbtea
  • MongoDB:更新/更新插入与插入

    最近我注意到多次更新插入之间存在巨大的性能差异 通过批量操作 https docs mongodb org manual core bulk write operations 与插入 多个文档 我想知道我的说法是否正确 更新插入 更新就像f
  • 图像方向 - Android

    在过去一个月左右的时间里 我一直断断续续地与这个错误作斗争 每当我认为我已经解决了它 它似乎就会以某种形式回来 这是旧的 Android 图像旋转 90 度 错误 我在这里阅读了无数的帖子 StackOverFlow 并尝试了多种方法 但似
  • 将 [String: AnyObject] 转换为 [String: Any] [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我有一个 String AnyObject 类型的 Swift 变量 但是我尝试调用的函数需要一个 String Any
  • shebang 标志与 set 内置标志之间的区别

    在 shebang 行上传递给脚本的标志与使用set内置 例如 bin bash e do stuff vs bin bash set e do stuff 这个问题并不具体针对 e标志 但一般来说对于任何此类标志 显然set flags
  • WCF 服务默认值

    我的 WCF 服务有以下数据协定类 DataContract Name MyClassDTO public class MyClass private string name Default Name DataMember public s