Проблемы с авто-свойствами - PullRequest
1 голос
/ 16 декабря 2008

Вот что дает отражатель:

public int Int1 { get; set; }
public string StringA { get; set; }

// Fields
[CompilerGenerated]
private int <Int1>k__BackingField;
[CompilerGenerated]
private string <StringA>k__BackingField;

Проблема в том, что спецификация C # не указывает явно, как называются вспомогательные поля для автоматических свойств. Это может быть проблемой для двоичной сериализации (из книги C # 3.0 в двух словах). Есть ли другие проблемы с авто-свойствами? Должна ли MS указать это в C # specs?

Ответы [ 2 ]

1 голос
/ 16 декабря 2008

Я не думаю, что MS должна указывать имя - я думаю, что разумнее избегать двоичной сериализации, которая, на мой взгляд, всегда будет несколько хрупкой. (Сериализация Java также хрупка.) Если она опирается на имена полей (и может быть способ обойти это путем присвоения ваших свойств - я не достаточно опытен с двоичной сериализацией, чтобы знать), то это уже довольно жестко ограничивает изменения реализации .

Моя самая большая проблема с автоматическими свойствами заключается в том, что невозможно создать подлинно свойства только для чтения (с полями только для чтения). Я об этом раньше слышал ...

0 голосов
/ 04 января 2009

Мне не нравится следующее об авто-свойствах:

  1. Невозможно установить точки останова для авто-свойств.

  2. Поля в классе очевидны, вам нужно изучить поля, а также свойства, чтобы узнать, какие поля в классе. Где, если они не используются, вы можете просто проверить область полей.

  3. Удаляет возможность украшать базовые поля только для чтения, энергозависимые и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...