Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >WCF服务和对象构造函数

WCF服务和对象构造函数
EN

Stack Overflow用户
提问于 2013-03-22 05:45:17
回答 1查看 6.5K关注 0票数 3

我只是在学习WCF服务。我有一个返回我创建的名为GPSPosition的对象的方法。GPS定位对象具有纬度和经度。如果没有这些属性,对象就不应该真正存在。因此,我想让构造函数接受Lat和Long浮点数。因此,当对象被创建时,值将被设置,并且永远不会无效(Unset)。

但是,这是我WCF服务的对象。作为我的调用应用程序使用的WCF服务对象,可以有一个构造函数吗?如果我在调用代码中使用var position = new GpsPosition{ lat=1, lon=1 };,构造函数会工作吗?WCF类中可以有构造函数吗?

我认为它们在不同语言之间是共享的,所以如果服务被Java使用,我不确定构造函数将如何触发。对象结构共享给调用应用程序,不是吗?您能否在构造函数中激发.net代码(以及getter和setter方法,在这种情况下)?

如果构造函数不可用,是否有办法确保我的对象永远不会无效?(必须在-180和+180之间具有有效的lat/long值)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-22 07:18:16

答案将取决于您的类型GpsPosition使用的序列化模型。WCF中最常用的两种方法是POCO (普通老CLR对象)和[DataContract]。在前者中,对象必须有一个没有参数的构造函数,这违背了您的要求(值需要设置一次)。在后者中,不调用对象构造函数,而是创建一个未初始化的类型实例,并通过反序列化来设置其成员。

因此,构造函数不是验证来自连线的对象的替代方法。需要验证对象(而不是构造函数)的是序列化回调,在反序列化完成时调用该回调。当反序列化完成时,WCF序列化程序将调用它们,您可以在那里检查对象是否被正确初始化,否则抛出异常。这个blog post有更多关于序列化回调的详细信息,下面的代码展示了您的场景的一个可能的实现。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[DataContract]
public class GpsPosition
{
    private float _lat;
    private float _lon;
    private bool _latWasSet;
    private bool _lonWasSet;

    public GpsPosition(float lat, float lon)
    {
        _lat = lat;
        _lon = lon;
    }

    [DataMember]
    public float lat
    {
        get { return _lat; }
        private set
        {
            _lat = value;
            _latWasSet = true;
        }
    }

    [DataMember]
    public float lon
    {
        get { return _lon; }
        private set
        {
            _lon = value;
            _lonWasSet = true;
        }
    }

    [OnDeserialized]
    void OnDeserialized(StreamingContext ctx)
    {
        if (!_latWasSet || _!lonWasSet ||
            _lat < -90 || _lat > 90 ||
            _lon < -180 || _lon > 180)
        {
            throw new InvalidOperationException("Required property is missing");
        }
    }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15571902

复制
相关文章
点击展开显示折叠内容
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/111722.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/12
2.8K0
点击展开显示折叠内容
如何实现文本内容折叠并显示“...查看全部”?
多行文本超过指定行数隐藏超出部分并显示“...查看全部”是一个常遇到的需求,网上也有人实现过类似的功能,不过还是想自己写写看,于是就写了一个vue的组件,本文简单介绍一下实现思路。
winty
2020/12/07
5.1K0
如何实现文本内容折叠并显示“...查看全部”?
技巧:文本超过N行折叠内容并显示“...查看全部”
多行文本超过指定行数隐藏超出部分并显示“...查看全部”是一个常遇到的需求,网上也有人实现过类似的功能,不过还是想自己写写看,于是就写了一个Vue的组件,本文简单介绍一下实现思路。
@超人
2021/02/26
2.8K0
技巧:文本超过N行折叠内容并显示“...查看全部”
技巧:文本超过N行折叠内容并显示“...查看全部”
多行文本超过指定行数隐藏超出部分并显示“...查看全部”是一个常遇到的需求,网上也有人实现过类似的功能,不过还是想自己写写看,于是就写了一个Vue的组件,本文简单介绍一下实现思路。
Nealyang
2021/02/01
2.5K0
技巧:文本超过N行折叠内容并显示“...查看全部”
ReactJS的简单介绍和使用
一、React的家世背景 React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设Instagram 的网站。做出来以后,发现这套东西很好用,就在2013年5月开源了。 Facebook的设计理念是独立、小巧、快速、创新,而React的特点也正说明了这一点。 二、React 更“轻”的MDV框架 先来说一下什么是MDV吧,MDV即Model Driven View,根据model动态生成view。MDV框架将程序员从传
lonelydawn
2018/02/09
1.4K0
reactjs
最近在学习react js,ReactJS是Facebook开发的用于构建用户界面的JAVASCRIPT库,利用其可以实现组件式开发。
用户1394570
2018/08/08
1.3K0
使用正则匹配并显示匹配的内容
最近在解析HTML文件,遇到这样的一个场景。我需要将HTML文件中data-url="xxx"中的xxx查找并显示出来。
大江小浪
2018/07/24
3K0
centos打开windows的ftp 无法显示内容 显示空白内容
centos下gnome打开windows FTP显示空白,无内容,windows下 打开正常。
全栈程序员站长
2022/07/05
6.3K0
centos打开windows的ftp 无法显示内容 显示空白内容
NodeJS和ReactJS,VUEJS的关系
网上找的科普贴,整理了一下发给大家,出处见底部链接。有许多类比的例子不太准确,大家参考下就行。
浩Coding
2019/08/26
6.2K0
NodeJS和ReactJS,VUEJS的关系
dotnet 使用 ShowMeTheXAML 显示 WPF 的 XAML 控件内容
本文来告诉大家一个好用的控件库,这个控件库可以方便用在自己编写示例项目中使用。使用 ShowMeTheXAML 控件库可以将某段 XAML 内容作为字符串文本内容显示出来,方便让其他开发者看到界面以及对应的内容
林德熙
2021/04/02
1.2K0
dotnet 使用 ShowMeTheXAML 显示 WPF 的 XAML 控件内容
使用cookie记录让JS弹出层只显示一次和oneindex使用记录
运用cookie的原理,一个页面只提示一次的DIV提示层。特别适合于页面的功能小提示等。可以做出类似QQ空间的功能提示。
怪兽
2022/09/20
1.5K0
使用reactJS要注意的地方
虽然react使用的jsx可以html和js混编,但是这里的html用的时候有的地方还是和原来的习惯不太一样。这里汇总一些我已经遇到的不一样,还有其他要注意的地方
黒之染
2018/10/19
5960
初学ReactJS,写了一个RadioButtonList组件
 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>React Demo</title> 5 <meta charset="utf-8" /> 6 </head> 7 <body> 8 <script src="Scripts/react.js"></script> 9 <script src="Scripts/JSXTransformer.js"></script> 10 <div id="container1
蒋金楠
2018/01/15
8760
初学ReactJS,写了一个RadioButtonList组件
Hello ReactJS
前言 React学习前先搭好环境,官网的例子看着比较分散。结合webpack就可以体验完整的es6开发流程了。 源码:https://github.com/Ryan-Miao/hello-react-js/releases/tag/0.1 1. 环境搭建 涉及以下几个技术。但从hello world的角度说,目前先不用知道是干嘛的,先用来学习react,后面再去研究各个组件的功能。 Webpack - A module bundler Babel - A Javascript compiler ES6 -
Ryan-Miao
2018/03/13
1.3K0
Hello ReactJS
CSS 控制内容显示行数
-webkit-line-clamp 用于限制块元素显示文本的行数,它是一个不规范的属性,没有出现在 CSS 规范草案中。
很酷的站长
2022/12/16
2.7K0
CSS 控制内容显示行数
ReactJS实现一个简单的评论列表
仔细观察,item 里的字段都来自外界,并非该组件,所以定义成无状态的 function 最好。
JavaEdge
2021/03/18
5670
swift textView内容显示不全
  意见反馈页面有一行提示文字,包含客服QQ,要求qq可点击。为了实现点击功能,这里的文本没有使用UILabel,而是采用了UITextView,使用textView的链接功能。
王大锤
2018/11/07
2.8K0
isomorphic reactjs
web应用从最早静态页面、到php后台框架输出、到mv*为主的SPA、到基于node中层的直出,目前有人提出web的下次改变可能将是基于isomorphic javascript的前后台同构应用。
IMWeb前端团队
2019/12/03
2.8K0
isomorphic reactjs
点击加载更多

相似问题

一次显示一个折叠内容

124

显示和隐藏折叠内容

227

如何在twitter bootstraps弹出窗口中显示链接和更多内容?

10

使用ReactJS隐藏/显示内容

432

一次显示一个<tbody>内容的Jquery折叠html表

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文