在实际对接第三方接口时,偶尔会有一些字段在某些情况下是不需要传值的。那如何处理呢?
有两种方法:
1、将值类型改为可空类型;
2、定义基类,基类包含所有必须要传的字段,子类则加入偶尔需要传的字段。
下面以某个场景为例来说明:
有一个接口,传 x ?和 ?y 两个int参数。 x 有时可不传,y 必须要传。在不传x的情况下如何处理?
?
using System;
using System.IO;
namespace Study
{
internal class Program
{
static void Main(string[] args)
{
//有一个接口,传 x 和 y 两个int参数。 x 可传可不传,y 必须要传。在不传x的情况下如何处理
var orginal = new ParaOrginal() { x = 0, y = 1 };
var way1 = new ParaWay1() { y = 1 };
var way2 = new ParaWay2Base() { y = 1 };
Console.WriteLine("原 始 类:\n{0}\n", Newtonsoft.Json.JsonConvert.SerializeObject(orginal));
Console.WriteLine("第1种方法:将 x 改为可空类型:\n{0}\n", Newtonsoft.Json.JsonConvert.SerializeObject(way1));
Console.WriteLine("第2种方法:设计基类:\n{0}", Newtonsoft.Json.JsonConvert.SerializeObject(way2));
Console.Read();
}
}
/// <summary>
/// 原始类
/// </summary>
public class ParaOrginal
{
public float x { get; set; }
public float y { get; set; }
}
/// <summary>
/// 第1种方法:将 x 改为可空类型
/// </summary>
public class ParaWay1
{
public float? x { get; set; }
public float y { get; set; }
}
/// <summary>
/// 第2种方法:设计基类。包含所有必须要传的字段
/// </summary>
public class ParaWay2Base
{
public float y { get; set; }
}
/// <summary>
/// 偶尔要传的字段
/// </summary>
public class ParaWay2: ParaWay2Base
{
public float x { get; set; }
}
}