标签: datacontracts

我应该测试合同中的所有枚举值吗?

我对是否应该考虑某种类型的测试功能或合同有疑问。

假设我有一个像 /getToolType 这样的 API,它接受一个 {object" "myObject"} 作为输入,并以 {type: "[az]+"} 的形式返回 type

客户端和服务器之间一致认为返回的类型将匹配一组字符串,比如 [hammer|knife|screwdriver],所以消费者决定在枚举中解析它们,当返回的类型未知时使用回退值。

消费者是否应该为每种类型(锤子、刀子、螺丝刀)包含一个测试用例,以确保生产者仍然遵守它总是返回的协议,例如,当使用锤子对象调用 /getToolType 时,小写字符串“hammer” ? 或者你会认为这样的测试用例是功能性的吗?为什么?

datacontracts pact pact-java pact-net

5
推荐指数
2
解决办法
1345
查看次数

JSON.net不包含EmitDefaultValue为false的null属性

我有一个包含许多数据合同的系统,其成员用以下内容进行装饰:

[DataMember(EmitDefaultValue = false)]  
Run Code Online (Sandbox Code Playgroud)

我有一个案例,当序列化为JSON时,我需要在null时包含成员.无论我选择哪种串行器设置,我都无法使用它.

   [TestMethod]
    public void SerializationTest()
    {

        var contract = Activator.CreateInstance(typeof(TestContract));

        var formatter = new JsonMediaTypeFormatter
        {
            SerializerSettings = new JsonSerializerSettings
            {
                NullValueHandling = NullValueHandling.Include,
                DefaultValueHandling = DefaultValueHandling.Ignore,
                TypeNameHandling = TypeNameHandling.All,
                ContractResolver = new DataContractResolver(),
                Binder = new DataContractBinder()
            }
        };

        var result = JsonConvert.SerializeObject(contract, formatter.SerializerSettings);
    }
Run Code Online (Sandbox Code Playgroud)

我甚至创建了一个自定义数据合约解析器,它为每个属性提供了额外的覆盖.

        protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
    {                        
        var property = base.CreateProperty(member, MemberSerialization.Fields);                        
        property.NullValueHandling = NullValueHandling.Include;            
        property.DefaultValueHandling = DefaultValueHandling.Ignore;
        property.ShouldSerialize = o => true;
        return property;
    }
Run Code Online (Sandbox Code Playgroud)

我已经尝试了空值处理和默认值处理的所有变体来忽略emit默认值= false.根据json …

.net json.net datacontracts

2
推荐指数
1
解决办法
1549
查看次数

在WCF的实体类中使用[Datacontract]属性有什么用处

我正在使用.net 4.0和wcf服务.我有业务实体类,没有使用[Datacontract]属性定义.

当我尝试检索少于1000个类型的业务实体类的记录时,它工作正常,但是当我尝试检索超过1000个类型的业务实体类的记录时,它会抛出此异常:

格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数http://tempuri.org/:Securities时出错 .InnerException消息是'对象图中可以序列化或反序列化的最大项数是'65536'.更改对象图或增加MaxItemsInObjectGraph配额.".有关更多详细信息,请参阅InnerException.

当使用[DataContract]为业务实体类定义的属性时,问题得到了解决.

  1. 那么[DataContract]属性在上述情况下有多重要?
  2. 使用使用[DataContract]attribute 定义的业务实体类和不使用[DataContract]属性有什么区别?

wcf datacontracts

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

标签 统计

datacontracts ×3

.net ×1

json.net ×1

pact ×1

pact-java ×1

pact-net ×1

wcf ×1