Здравствуйте, Аноним, Вы писали:
А>В классе есть автосвойство (по имени SourceColumn), заведенное для того, чтобы get и set обладали разным уровнем видимости (public и private соответственно). Иначе использовалось бы поле.
А>А>public string SourceColumn
А>{
А> get;
А> private set;
А>}
А>
А>Кроме него есть и второе автосвойство — TargetColumn. Оба свойства задаются одним и тем же алгоритмом, только разные входные параметры.
С этого места поподробнее.
А>Поэтому (во избежание copy-paste) для инициализации предусмотрен статический метод
А>А>private static bool Init(string data, out string column);
А>
Не стоит делать инициализаторов свойств если свойство запрещено для записи.
А>Свойство, однако, нельзя передать для инициализации. Сейчас используется такой код:
Свойство нельзя =) Необходимо создать для начала экземпляр класса, затем только мы можем работать со свойством.
А>А>string sourceColumn;
А>Init(data, out sourceColumn);
А>SourceColumn = sourceColumn;
А>
А>Как это сделать красивее? Можно автосвойство превратить в обычное свойство на host-поле, а передавать host, но заводить host только ради этого...
Какая цель использования свойства в вашем типе?
А>P.S. Почему компилятор не генерирует код, подобный используемому, автоматически, когда видит передачу свойства?
Передать свойство нельзя =) можно либо считать данные со свойства либо записать данные (и только при условии что заданы set или get).