标签: contract

在WCF Web编程模型中,如何使用查询字符串参数数组(即具有相同名称)编写操作契约?

使用WCF Web编程模型可以指定操作合同,如下所示:

[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Xml, UriTemplate = "SomeRequest?qs1={qs1}&qs2={qs2}")]
XElement SomeRequest1(string qs1, string qs2);
Run Code Online (Sandbox Code Playgroud)

现在,如果我们必须签订一个接受具有相同名称的参数数组(在这种情况下为qs1)的合同,那么......

[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Xml, UriTemplate = "SomeRequest?qs1={qs1}&qs1={qs2}")]
 XElement SomeRequest2(string qs1, string qs2);
Run Code Online (Sandbox Code Playgroud)

当我们调用方法时,我们在运行时收到错误消息:

查询字符串必须具有唯一名称的"name = value"对.请注意,名称不区分大小写.有关更多详细信息,请参阅UriTemplate的文档.

如何定义一个HTTP服务,该服务使用参数数组公开资源,而不需要使用loosey-goosey接口?

rest wcf web-services contract operation-contract

13
推荐指数
2
解决办法
2万
查看次数

是否有一种美妙的方式来断言Java方法中的前提条件?

我的很多函数在声明之下都有一大堆验证代码:

if ( ! (start < end) ) {
    throw new IllegalStateException( "Start must be before end." );
    }
Run Code Online (Sandbox Code Playgroud)

我想精确地指定某些输入的有效范围 - 例如A> B,C => 1或str_d.length()> 0.

鉴于我的一些函数有很多必须经过验证的论证,我最终可能会编写大量的样板来验证前置条件.我正在编写一个主要由非技术开发人员使用的库,我们发现验证函数输入是帮助我们的用户正确操作API的最佳方法.我们越早提出错误,客户就越不需要做的工作.

是否有更优雅的方法来指定我的方法中的前置条件,后置条件(以及可能的不变条件).

一位同事告诉我有关Eiffel编程语言的一个特性,它允许以非常自然的方式描述前/后/不变条件,而无需重复大量的样板代码.是否有Java语言的附加组件,这将允许我使用这些魔术?

java eiffel contract

11
推荐指数
4
解决办法
6214
查看次数

便携/可互操作的WCF合同

我想知道是否有任何人在设计WCF合同方面有一些很好的提示/注意事项,而不是在旧的Microsoft Web服务技术(例如WSE)和非Microsoft技术(例如WSE)方面. Java调用WCF Web服务.

例如:在将DateTime作为合同中的类型公开时,是否需要考虑任何特殊规则?字典和Hashtables怎么样?您可能遇到的各种绑定有哪些问题?

.net wcf interop datacontract contract

9
推荐指数
1
解决办法
1554
查看次数

C++ 2a合同编程和编译器

我有兴趣研究最近接受的C++ 20合同编程,用于学习和调查目的.

当我正在寻找编译器支持时,我很失望,没有找到任何.双方gccclang都相当明确表示,他们不其内支持此功能--std=c++2a模式.

由于批准是最近的,我不会惊讶于当前的编译器不支持所提出的确切语义.更令我惊讶的是,绝对没有任何东西,即使是特定于编译器的扩展,即使在有限的方式下也会模仿相同的功能.

我期待C++委员会只考虑在现场证明自己的功能,通常是通过编译器或目标特定扩展.批准C++ 20的此功能表明该功能应该可以在某处访问.但到目前为止,我一直无法找到它.

目前有没有办法试验C++合同编程?甚至使用一组特定于编译器的扩展?

c++ gcc clang contract c++20

9
推荐指数
1
解决办法
617
查看次数

Contract.Requires vs Contract.Require

我注意到Microsoft以一种奇怪的方式在.NET 4中命名了他们与代码契约相关的函数.

他们在"require"和"ensure"的末尾加上"s",所以有Contract.Requires()和Contract.Ensures(),但不是在"断言"和"假设"的末尾,所以有契约.Assert()和Contract.Assume().差异让我有点困惑.

事实上,我真正的问题是,我正在尝试在PHP中使用代码契约,所以我写了一些东西来模仿.NET 4中的"契约"类.由于PHP没有内置方法来验证参数的类型,我在自己的Contract类中添加了一个方法来进行一些验证.我选择"expect"这个词,因为我认为"期望参数'bar'是字符串但是..."是参数类型错误时的常见消息.问题来了.我应该将我的方法命名为Contract.Expect()还是应该将其命名为Contract.Expects()?

我来自一个非英语国家,对不起我的英语很差.可能它实际上是一个英语问题,但我认为只有程序员可以帮助我.如果这个问题不合适,那就很抱歉.

.net contract

8
推荐指数
1
解决办法
1093
查看次数

删除"集成测试骗局" - 了解协作和合同测试

我最近看过集成测试是 JB Rainsberger 的骗局,我现在正在寻找关于这个主题的更多资料.我不得不说,我对我们做错了多少感到震惊(即我们应该进行单元测试的集成测试),对Rainsberger描述的概念很感兴趣,但也对如何应用它们感到困惑.我想有更多描述的协作测试和合同测试,但我不知道从哪里开始.

唯一困扰我的是测试需要提出的4个问题:

A面:

Do I ask the right question?
Can I deal with the answer?
Run Code Online (Sandbox Code Playgroud)

B面:

Can I answer a question?
Do I answer correctly?
Run Code Online (Sandbox Code Playgroud)

但是我如何将它应用于我的应用程序堆栈中的一些随机方法?

是否有一本书或教程或示例,它们采用了一个真实世界的例子并应用了这些孤立微测试的想法?理想情况下,该示例使用Java,C#或C++.

任何涉及这些概念的文献总体上可以帮助我更好地理解它们.

此外,如果有论坛,我可以询问有关如何进行正确的单元测试的更详细的问题,甚至可能重构现有的代码和帖子示例会很好.

谢谢!

collaboration testing integration-testing unit-testing contract

7
推荐指数
1
解决办法
1330
查看次数

"添加方法合同......"Android Studio的主要用途是什么?

我得到以下选项,如"添加方法合同'setDisplayHomeAsUpEnabled'",我知道检查是因为NPE可以扔掉getSupportActionBar()但我想知道方法合同的实际使用

在此输入图像描述

如果我在该选择上按Enter键,我将得到:

在此输入图像描述

任何分享?任何帮助?它会赞赏:)

android annotations nullpointerexception contract

7
推荐指数
1
解决办法
2232
查看次数

在销售软件许可证之前我需要知道什么?

我开发了一个基于Web的应用程序,公司对许可感兴趣.我怀疑他们打算使用他们想要的功能,并添加到他们现有的代码库中,因此许可证很可能是一次性的.因为它是在运行时解释的,所以我必须翻转源代码,并且我不能立即明白我可以以任何方式保护它.

为了增加一层复杂性,我有许多用户表示有兴趣将其用作服务,因此我一直致力于基于订阅的版本.这是一个利基市场,因此增长潜力有限,但我不想卖空.

我通常每小时出售我的服务,所以我不知道授权代码的第一件事.

我正在努力解决的问题是:

  1. 我应该收取什么费用?
  2. 商业软件许可证是什么样的?
  3. 我该如何保护自己的工作?

我敢肯定还有几十个我应该问的问题.我该怎么想?

提前致谢.

- 谢谢回复,全部 -

licensing data-protection contract

6
推荐指数
2
解决办法
6079
查看次数

如何在结构中强制执行合同

我想强制一个结构对于某个合同始终有效,由构造函数强制执行.但是,default运营商违反了合同.

请考虑以下情况,例如:

struct NonNullInteger
{
    private readonly int _value;

    public int Value
    {
        get { return _value; }
    }

    public NonNullInteger(int value)
    {
        if (value == 0)
        {
            throw new ArgumentOutOfRangeException("value");
        }

        _value = value;
    }
}

// Somewhere else:
var i = new NonNullInteger(0); // Will throw, contract respected
var j = default(NonNullInteger); // Will not throw, contract broken
Run Code Online (Sandbox Code Playgroud)

作为一种解决方法,我将结构更改为类,因此我可以确保在初始化新实例时始终调用构造函数.但我想知道,是否绝对没有办法获得与结构相同的行为?

c# struct contract

6
推荐指数
2
解决办法
231
查看次数

基础的定义必须先于派生合约的定义

我有两个不同的文件,即 Project1.sol 和 Project2.sol

Project2.sol 就像:

import "./Project1.sol";
        
contract Project2{
    address newProject1Address =address(new Project1());
}
Run Code Online (Sandbox Code Playgroud)

Project1.sol 类似于:

import "./Project2.sol";

contract Project1 is Project2{

}
Run Code Online (Sandbox Code Playgroud)

我已在 Project2.sol 文件中部署了 Project1。而且我一直在使用 Project1.sol 文件中 Project2 中的结构。

我收到一个错误,即“基础的定义必须先于派生合同的定义。 ”对于这一行:contract Project1 is Project2{

网上查了一下错误,有两份合同一份文件的解决方案。但是,我有两个文件。

我将这两个合同合并在一个文件中。

这就是我所做的:

pragma solidity >=0.7.0 <0.9.0;

contract Project2{

        Apple[] public applepies;
        
        struct Apple{
             string name;
             mapping (address => bool) applepie;
        }

        function createProject() external{
            
             address newProject1Address =address(new Project1(msg.sender));

             uint idx = applepies.length;
             applepies.push();
             Apple storage newProject = applepies[idx];
        }

        

    } …
Run Code Online (Sandbox Code Playgroud)

inheritance contract ethereum solidity smartcontracts

6
推荐指数
1
解决办法
4614
查看次数