C# 确定是否为数组或对象

C# 确定是否为数组或对象,c#,.net,json,web-services,rest,C#,.net,Json,Web Services,Rest,我创建了一个类来解析JSON响应。我遇到的问题是,一个项目有时是数组,另一个是对象。我曾试图想出一个解决办法,但最终总是给我带来一些其他问题 我希望有一些if或try语句,让我确定创建了什么 伪代码 [DataContract] public class Devices { if(isArray){ [DataMember(Name = "device")] public Device [] devicesArray

我创建了一个类来解析JSON响应。我遇到的问题是,一个项目有时是数组,另一个是对象。我曾试图想出一个解决办法,但最终总是给我带来一些其他问题

我希望有一些if或try语句,让我确定创建了什么

伪代码

    [DataContract]
    public class Devices
    {   
        if(isArray){
        [DataMember(Name = "device")]
        public Device [] devicesArray { get; set; }}

        else{
        [DataMember(Name = "device")]
        public Device devicesObject { get; set; }}
    }
使用丹的代码,我想出了以下解决方案,但现在当我尝试使用它时,我有一个铸造问题。 “无法将'System.object'类型的对象强制转换为'MItoJSON.Device'类型”


将目标属性声明为对象。然后,可以创建一个帮助器属性,用于处理目标是数组还是单个对象:

    private object target;

    public object Target
    {
        get { return this.target; }

        set
        {
            this.target = value;

            var array = this.target as Array;
            this.TargetValues = array ?? new[] { this.target };
        }
    }

    public Array TargetValues { get; private set; }

只需将其建模为一个数组-对于单个项目,它将是一个包含一个项目的数组。这是我最初所做的,但它无法工作。如果只有一项,则数组的长度始终为零。如果我将它创建为一个对象,那么它将适用于单个项目。我严重怀疑,如果传递一个项目并使用一个项目创建数组,那么数组的长度是否为零。
    private object target;

    public object Target
    {
        get { return this.target; }

        set
        {
            this.target = value;

            var array = this.target as Array;
            this.TargetValues = array ?? new[] { this.target };
        }
    }

    public Array TargetValues { get; private set; }