问题标签 [contracts]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
777 浏览

app-store - 公司是否应该阻止员工在空闲时间在应用商店发布应用?

我的公司正试图通过一项政策,禁止在任何应用商店中为所有开发人员分发任何应用程序(甚至免费)。

他们的理由是“外部工作活动会产生利益冲突”。他们不希望“你利用业余时间来开发你的应用程序,一旦它起飞你就辞职了”(引用开发主管的话)。

一些开发人员(包括我自己)已经表示这是一种滥用职权、毫无意义且最重要的是适得其反的政策(开发人员实际上会失去动力,无法在这种控制下在这里工作,并被剥夺分发项目的自由)。

就个人而言,我认为推动副项目(即使是商业活动,如果没有冲突)实际上符合公司的利益。

我也很好奇,这是常见的做法吗?

0 投票
1 回答
86 浏览

c# - 静态分析不适用于 VS 2010 Pro 的原因是什么?

是不是让普通开发者专注于在本地编写合约,然后提交给全球分析?

或者有没有办法获得与这种体验相媲美的东西?也许作为单独的下载?

此外,如果一个库有合同,那么无论使用什么版本的 VS,智能感知工具提示都会包含合同吗?

0 投票
1 回答
468 浏览

build - 代码合约构建性能

我的问题非常直截了当:启用代码合同后,是否有人会增加构建时间?

0 投票
1 回答
382 浏览

unit-testing - 使用 Pex、Contracts 和 QuickGraph 进行假阴性单元测试

每个人。我在合同、pex 和 quickgraph 之间有一个令人困惑的交互,非常感谢知识渊博的人提供的建议。我把它归结为一个复制案例,其中注释掉一个合同会使假阴性消失,但我无法在允许的时间内用调试器诊断它,因为主题代码(快速图)对属性有副作用- getters,意味着调试器在显示属性值时执行副作用,干扰实际执行顺序。

首先是一点背景,然后是细节,然后是一个可以下载和试用的项目的指针,如果您愿意深入研究的话!

我安装了 Pex & Moles

http://research.microsoft.com/en-us/projects/pex/downloads.aspx

和 .NET 4.0 的 CodeContracts

http://research.microsoft.com/en-us/projects/contracts/

我通过 nuget 下载了最新版本的 QuickGraph,它都是为 .NET 3.5 构建的。我将它修剪到我需要的最低限度,进入所有项目属性,将它们全部从 .NET 3.5 客户端配置文件更新到 .NET 4.0,修复了一个源中断更改(这是微不足道的,非常非常不可能与我的问题)。然后我转到每个项目页面上的 Code Contracts 选项卡并启用所有静态和动态选项。

http://quickgraph.codeplex.com/releases/view/55262

该项目有 192 个单元测试,其中许多是 Pex 生成的(非常好!)。要运行测试,请从

http://dl.dropbox.com/u/1997638/QuickGraph.zip

确保您有来自上述链接的 Pex & Moles 和 Contracts。打开解决方案,重建所有内容,然后在解决方案级别,“在解决方案中运行所有测试”(control-R,A)。一切都会过去的。然后转到 IImplicitUndirectedGraphContracts.cs 的第 49 行并取消注释大注释下的合同(由我插入)。一项测试 Prim12240WithDelegate 将失败。

该测试通过在 Edges 和 EdgeCount 的属性获取器中调用用户提供的委托来运行图形构造函数。可爱的。但是 IImplicitUndirecteGraphContracts.cs 第 49 行的 Contract 出了点问题。

这是一个假阴性,因为如果我注释掉这个合同,测试就通过了。在调试器中尝试遵循这一点时,它与在属性 getter 中创建边缘的时间有关。然而,我无法解开这个问题,因为调试器调用这些 getter,主题代码调用它们,合约代码调用它们,可能是静态的,也可能是动态的,我只是迷失了试图遵循它,并认为我会向那些比我更了解合同执行细节的人提出这个问题。

这是违规合同;将其注释掉会使单元测试成功:

0 投票
1 回答
1293 浏览

wcf - SvcUtil 和 /dconly 为未标记 DataContract 属性的数据类型生成 XSD

有没有人遇到过 Svcutil 和 /dconly 选项的问题,它为程序集中的每个数据类型生成元数据,即使它没有用 [DataContract()] 属性标记?它似乎还在为仅在代码中引用的类型生成元数据,例如 XmlDictionaryReaderQuotas,即使这些不是我在其上生成元数据的物理程序集的一部分。

一些信息:使用 .NET 4.0 版本的 SvcUtil。类是否为空都没有关系。在命令行中没有为 SvcUtil 指定引用。

命令行:

"C:\In Progress Work (Prospective)\Prospective Server\Prospective Server\Management\Prospective.Server.Server.NET40.Debug.AnyCPU.dll" /nologo /t:metadata /d:"C:\In Progress Work (预期)\预期服务器\预期服务器\管理" /dconly

0 投票
1 回答
687 浏览

wcf - WCF 消息协定和命名空间

我有一个 WCF 服务,我已经为它定义了一个消息契约。我已将 IsWrapped 设置为 false。当我将 xml 发送到我的服务时,我必须在肥皂体的根节点中指定 tempuri 命名空间,否则传入的消息为空。我想知道是否可以使用任何设置,这样我就不必在 xml 中传递命名空间?顺便说一句,我正在使用 XmlSerializerFormat。我尝试在 MessageBodyMember 中设置命名空间,但它不起作用。

0 投票
1 回答
1531 浏览

c#-4.0 - How do I use code contracts in .NET 4.0 without making my code look cluttered?

I have started using Code Contracts and have found that it makes it difficult to immediately spot the 'guts' of a method.

Take this (very simple) example:

Now I'm tempted to put the contracts in a region, so that they can be hidden away, but then I'm concerned that I'm losing a nice advantage of being able to glance at the method and see what it expects.

What do you do to keep your contracts 'tidy'? Or am I just being too picky?

0 投票
2 回答
217 浏览

c# - 所有 .NET 都更新为使用合同了吗?

自从将合同引入 .NET 4.0 以来,我想知道微软是否像在 BCL 中那样将其传播到他们的所有类?

如果不是,那为什么?这种特性只有在标准库默认支持的情况下才有意义,对吧?

0 投票
2 回答
1002 浏览

java - java中的合约

我试图更多地了解java中合同的含义。

这是java中两个合约的示例:

第二个:

任务是使用这些先决条件更改给定数组,以便在出现任何 4 后出现 5。例如:

fix45({5,4,9,4,9,5}) -> {9,4,5,4,5,9}

fix45({1,4,1,5}) -> {1,4,5,1}

这是我写的(有效):

我的问题: 1. 两份合同有什么区别?2.我真的应该检查前置条件吗?3. 这个“和”是什么意思?4. 我的代码应该如何根据第二份合同进行更改?

感谢你们。

0 投票
4 回答
3185 浏览

c# - WCF - 使用完全相同的数据合同的多个服务合同

我对 WCF 大师有一个新问题。

所以,我有一个类User接近数据库中用于数据库操作的“用户”表示。现在,我想要 2 个不同的服务合同,将此类用作数据合同,但每个服务合同都有自己的方式......我的意思是,

因此,这个想法是每个服务将获得不同类型的用户,即'User'. 请记住,我想按'User'原样使用数据库操作,我有什么选择来实现这一点?我真的需要创建不同的数据合约还是有其他更聪明的方法?

最好的办法不仅是给我解决方案,还要向我解释一些最佳实践和替代方案。

先感谢您。

EDIT1:我在这里添加了一个虚拟 DBLayer 类以获得更好的概述,以及为什么我认为在这种情况下继承可能不好。

一个解决方案是使用另一个 ' UserForService1' 和 ' UserForService2' 作为数据合约,它们将在最后从/到一个 ' User' 映射,但我想要一些其他的观点。

EDIT2:非常好的文章在这种情况下对我有帮助:http: //bloggingabout.net/blogs/vagif/archive/2009/03/29/iextensibledataobject-is-not-only-for-backward-compatibility.aspx