Я однажды (многие, много лет назад) записал программу вывода для проекта, который создал электронные таблицы Excel с помощью структуры Excel Oper. Это было формантой двоичного файла, которая потребовала большого объема битового жонглирования. Следующая ссылка дает аромат структуры Oper Книги .
Safari
I ' Я только что заметил, что он фактически включает следующий код:
private bool balanceFieldSpecified;
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool BalanceSpecified {
get {
return this.balanceFieldSpecified;
}
set {
this.balanceFieldSpecified = value;
}
}
Который обеспечивает нужную мне функциональность.
Я оставлю вопрос открытым на время на случай, если есть элегантный способ использовать допускающие значения NULL? введите вместо этого.
Я считаю, что если вы добавите nillable = "true" в определение схемы XML, XSD создаст для этого элемента тип, допускающий значение NULL. В любом случае это, вероятно, хорошая идея, поскольку вы подразумеваете, что это значение действительно может быть нулевым, и это сделает ваше определение схемы более явным в этом отношении.
К сожалению, в этом случае оно все еще включает соответствующее поле «Указано». Если вы хотите, чтобы сериализатор напрямую подчинялся значениям, допускающим значение NULL, вам необходимо вручную удалить столбец «xxSpecified» из сгенерированного кода.