C#:接口中如何将某个值类型的字段传null?

时间:2024-01-23 16:18:58

在实际对接第三方接口时,偶尔会有一些字段在某些情况下是不需要传值的。那如何处理呢?

有两种方法:

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; }
    }
}