Здравствуйте, _NN_, Вы писали:
_NN>Нет конечно
_NN>Обычно метод Init не нужен, потому как возникают сразу множество проблем контролирования состояния.
А как насчет контрактов (interface). Как там описать конструктор?
_NN>Что если два раза кто-нибудь вызовет ? Из двух потоков ? И т.п.
По поводу двух раз -- уже написал, достаточно 1 поля для проверки.
По поводу потоков. Инстанс класса считается не потокобезопасным, если не указано иное. Если хотите сделать потокобезопасным -- то вам нужно озаботиться не только этим методом, но и всеми другими.
_NN>С обобщениями действительно проблема и есть предложение, однако не так часто нужно и всегда есть обходные пути.
_NN>Насчёт сериализации, то для объектов-данных (data object) вообще не нужен конструктор и логика.
А проверка того что все обязательные поля установлены?
_NN>Есть предложение о добавления конструктора и расширения класса методами, но это не повод создавать всегда двухуровневую иницализацию.
При использовании контрактов двухуровневой не избежать.