#c# #xsd.exe
#c# #xsd.exe
Вопрос:
У меня есть XSD.exe созданный класс. Я использую грубую инверсию элемента управления. Мой тестовый объект работал, пока я не добавил этот причудливый фрагмент XML:
<items>
<item>
<model>1000</model>
<description>Torque wrench</description>
<material>1545454</material>
<lot>3</lot>
<serial></serial>
<transferQty>1</transferQty>
<shipQty></shipQty>
</item>
<item>
//..item 2
</item>
<item>
//...item 3
</item>
</items>
</itemOrder>
Теперь создание объекта GeneratedByXsdClass не выполняется.
GeneratedByXsdClass.items = new itemOrderItemsItem[][]{
new itemOrderItemsItem[1][]//this hardcoded 1 bothers me. better way?
{
new itemOrderItemsItem[]
{
new itemOrderItemsItem()
{
model = "1000",
description = "Torque Wrench",
material = "10002525",
lot = "3",
serial = "",
transferQty = "1",
shipQty = ""
}
}
}
};
Ошибка компилятора:
Error 3 Cannot implicitly convert type 'itemOrderItemsItem[][]' to 'itemOrderItemsItem[]'
Я открыт для изменения xsd.exe сгенерированный класс, если это облегчает жизнь. Я действительно просто хочу <item>
повторить N раз.
Комментарии:
1. Какое это имеет отношение к Json?
2. Я думал, что синтаксис, который я использую для создания экземпляра свойств, был синтаксисом JSON. Это неверно?
3. Json — это формат данных с синтаксисом, который является подмножеством Javascript. То, что у вас есть, является примером синтаксиса инициализации встроенного объекта c #.
Ответ №1:
Упростите свой пример до этого:
new int[][]{
new int[1][]//this hardcoded 1 bothers me. better way?
{
new int[]
{
4
}
}
}
Теперь вы должны быть в состоянии увидеть, в чем проблема; вы пытаетесь поместить int[][]
внутри int[][]
an, а компилятор говорит, что ожидал a int[]
. Удалите строку с комментарием:
new int[][]{
new int[]
{
4
}
}
Это эквивалентно в вашем коде:
GeneratedByXsdClass.items = new itemOrderItemsItem[][]{
new itemOrderItemsItem[]
{
new itemOrderItemsItem()
{
model = "1000",
description = "Torque Wrench",
material = "10002525",
lot = "3",
serial = "",
transferQty = "1",
shipQty = ""
}
}
};