Как препятствовать тому, чтобы автоматические реализованные свойства были сериализированы?

Можно поместить внутреннее отделение в контейнер, который достаточно широк для содержания всех пущенных в ход отделений

#container {
  background-color: red;
  overflow: hidden;
  width: 200px;
}

#inner {
  overflow: hidden;
  width: 2000px;
}

.child {
  float: left;
  background-color: blue;
  width: 50px;
  height: 50px;
}
<div id="container">
  <div id="inner">
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
  </div>
</div>
36
задан hopla 13 November 2009 в 10:22
поделиться

5 ответов

Не поддерживается для автоматически реализуемых свойств. Вы должны использовать поле поддержки и установить для него NonSerializedAttribute .

public class ClassWithNonSerializedProperty {

  [NonSerialized]
  private object _data;  // Backing field of Property Data that is not serialized

  public object Data{
    get { return _data; }
    set { _data = value; }
  }
}
59
ответ дан 27 November 2019 в 05:29
поделиться

Если вы сериализуете в Xml, вы можете использовать атрибут XmlIgnore .

4
ответ дан 27 November 2019 в 05:29
поделиться

Я не уверен, что сможете. В этой статье MSDN о SerializableAttribute предлагается реализовать ISerializable и самостоятельно управлять сериализацией:

Все общедоступные и частные поля в типе, отмеченном SerializableAttribute, сериализуются по умолчанию, если только тип реализует интерфейс ISerializable для переопределения процесса сериализации.

Или отключите автоматическое свойство для этого конкретного поля.

4
ответ дан 27 November 2019 в 05:29
поделиться
// This works for the underlying delegate of the `event` add/remove mechanism.
[field:NonSerialized]
public event EventHandler SomethingHappened;

Но это не Похоже, для автоматически реализуемых свойств. Я подумал, что об этом стоит упомянуть, потому что это полезно знать при сериализации объекта с прикрепленными к нему подписчиками событий.

8
ответ дан 27 November 2019 в 05:29
поделиться

Если для вас очень важна портативность, особенно в встроенной системе, то C, безусловно, является лучшим вариантом, чем C ++. В то время как компиляторы C ++ на встроенных платформах догоняют, просто нет совпадения для широко распространенного использования C, для которой любая уважающая платформа имеет соответствующий компилятор.

Более того, я не думаю, что C уступает C ++, где речь идет о взаимодействии оборудования. Количество абстракции достаточно низкое (то есть нет иерархий глубоких классов), чтобы сделать C так же хорошее вариант.

-121--4544634-

Это невозможно автоматически реализованные свойства. Рассмотрим следующие:

Такое поведение «по дизайну». Решение во временном автоматическом свойствах были реализованы, заключались в том, что они будут работать в «общем случае», который среди прочего означает отсутствие атрибутов на сгенерированном поле. Идея, которая заставляет их простыми и не медленно мутировать их в полные свойства. Итак, если вам нужно использовать неразрешенные атрибуты, полные свойства, так это способ.

( http://social.msdn.microsoft.com/forums/en-us/vcsharp2008prerelase/thrad/2b6eb489-122a-4418-8759-10808252B195 )

4
ответ дан 27 November 2019 в 05:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: