Здравствуйте!
Работаю в VS2003 — VB.Net.
Столкнулся с такой проблемой: При сериализации класса не могу присвоить в элементе XML документа
одному атрибуту значение null , а другому некоторое значение.
Сериализуемый класс
' объявление типа
Public Class IndTaxNumColumn
<System.Xml.Serialization.XmlAttributeAttribute()> _
Public ROWNUM As Integer
<System.Xml.Serialization.XmlTextAttribute()> _
Public Value As String
End Class
' кусок класса который сериализуется
Public Class DBody
' .....................
<System.Xml.Serialization.XmlElementAttribute("IndTaxNum", _
Form:=System.Xml.Schema.XmlSchemaForm.Unqualified, _
IsNullable:=True)> _
Public IndTaxNum() As IndTaxNumColumn
'.....................
End Class
То, в документ передается массив объектов IndTaxNumColumn, при этом не все значения
Value заполняются.
Документ хранит таблицу, значит вид должен быть таким:
<IndTaxNum ROWNUM="1" xsi:nil="true" />
<IndTaxNum ROWNUM="2">345453<IndTaxNum/>
<IndTaxNum ROWNUM="2">867567<IndTaxNum/>
<IndTaxNum ROWNUM="4" xsi:nil="true" />
<IndTaxNum ROWNUM="5">767567<IndTaxNum/>
.................
Однако, если задавать
Value = System.DBNull.Value.ToString
создается —
<IndTaxNum ROWNUM="1" />
если не передавать значение IndTaxNumColumn в массив, то
<IndTaxNum xsi:nil="true" />
Ни тот, ни другой вариант не подходят.
Как можно присвоить null переменной
Value?
Заранее спасибо!
Здравствуйте, Slg, Вы писали:
Slg>...
Slg>не пробовали убрать из .DBNull.ToString — .ToString??
Пробовал.
Value имеет тип String, если использовать System.DBNull.Value.ToString без .ToString
ругается
Value of type 'System.DBNull' cannot be converted to 'String'.
Здравствуйте, voladu, Вы писали:
V>Здравствуйте, Slg, Вы писали:
Slg>>...
Slg>>не пробовали убрать из .DBNull.ToString — .ToString??
V>Пробовал.
V>Value имеет тип String, если использовать System.DBNull.Value.ToString без .ToString
V> ругается
V>Value of type 'System.DBNull' cannot be converted to 'String'.
тогда Nothing вместо System.DBNull.Value.ToString
Здравствуйте, Slg, Вы писали:
Slg>тогда Nothing вместо System.DBNull.Value.ToString
Поставил. Получается все то же самое
<IndTaxNum ROWNUM="1" />
...