Re: Свойства и out
От: xobotik Россия  
Дата: 15.11.10 16:53
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>В классе есть автосвойство (по имени 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).
С уважением!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.