.net C#数组类型[][]如何构建呢?

llmtgqce  于 2023-01-03  发布在  .NET
关注(0)|答案(1)|浏览(155)

定义/创建定义为AddOnTypeV17 [][]的类型的有效赋值时遇到问题

/// <remarks/>
        [System.Xml.Serialization.XmlArrayAttribute(Order=11)]
        [System.Xml.Serialization.XmlArrayItemAttribute("RequiresOneOf")]
        [System.Xml.Serialization.XmlArrayItemAttribute(IsNullable=false, NestingLevel=1)]
        public AddOnTypeV17[][] RequiresAllOf {
            get {
                return this.requiresAllOfField;
            }
            set {
                this.requiresAllOfField = value;
                this.RaisePropertyChanged("RequiresAllOf");
            }
        }

类型定义为:

/// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.8.4084.0")]
    [System.SerializableAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://stamps.com/xml/namespace/2021/01/swsim/SwsimV111")]
    public enum AddOnTypeV17 {        
        /// <remarks/>
        [System.Xml.Serialization.XmlEnumAttribute("SC-A-HP")]
        SCAHP,
//Remainder removed for clarity
    }

这是我尝试的错误:
一个二个一个一个
我得到的错误是:
Error CS0029 Cannot implicitly convert type 'System.Collections.Generic.List<USPostal.StampsIM.AddOnTypeV17>[][]' to 'USPostal.StampsIM.AddOnTypeV17[][]' < on line: return ja;
以及
错误CS1922无法使用集合初始值设定项初始化类型"AddOnTypeV17",因为它没有在第行上实现"System. Collections. IEnumerable"〈:新建加载项类型V17 ....
预期序列化为:

<ns1:AddOns>
          <ns1:AddOnV17>
            <ns1:Amount>0.00</ns1:Amount>
            <ns1:AddOnType>SC-A-HP</ns1:AddOnType>
          </ns1:AddOnV17>
        </ns1:AddOns>

我知道我错过了一些明显的东西。有人知道是什么吗?先谢了。

zte4gxcn

zte4gxcn1#

类型AddOnType[][]是多维数组,而不是List<AddOnType>,因此必须按如下所示返回多维数组:

private AddOnTypeV17[][] GetAddons() {
     return new AddOnTypeV17[][]
     {
         new [] { AddOnTypeV17.SCAHP, AddOnTypeV17.SCAHP },
         new [] { AddOnTypeV17.SCAHP },
     };
 }

希望它有助于弄清楚如何进一步使用它。
编辑:
您可能会使用一个列表,然后在其上调用ToArray将其转换为适当的类型:

return new List<AddOnTypeV17[]> {
    new [] { AddOnTypeV17.SCAHP, AddOnTypeV17.SCAHP },
    new [] { AddOnTypeV17.SCAHP },
}.ToArray();

如果你从其他地方动态地获取数据,使用列表可以使你更容易。下面的代码(在语义上)等价于上面的所有代码:

var list = new List<AddOnTypeV17[]>();
list.Add(new[] { AddOnTypeV17.SCAHP, AddOnTypeV17.SCAHP });
list.Add(new AddOnTypeV17[] { AddOnTypeV17.SCAHP, });
return list.ToArray();

相关问题