[Property to Method] + System.Attribute
От: Пельмешко Россия blog
Дата: 21.06.09 19:34
Оценка:
В наличии свойство с атрибутами и атрибуты на ацессорах:
class A
{
    private int value;

    [DebuggerHidden]
    public int Value
    {
        [Pure]
        get { return this.value; }
        set { this.value = value; }
    }
}
Конвертим в методы:
class A
{
    private int value;

    public void SetValue([DebuggerHidden] int value) { this.value = value; }

    [DebuggerHidden]
    public int GetValue() { return this.value; }
}
Не понятно как как относится свойство к аргументу Set-метода и куда подевался [PureAttribute]...
Думаю при наличии атрибутов на самом свойстве, надо глянуть на AttributeUsage свойств и по возможности (то есть при наличии флага AttributeTargets.Method) применить их на получаемые после рефакторинга метод(ы).


Обратный рефакторинг тоже не очень корректен с атрибутами:
[Pure]
public int GetValue()
{
    return this.value;
}
Применяет атрибуты метода на свойство, а не на ацессор:
[Pure]
public int Value
{
    get { return this.value; }
}


Ещё заметил, что конвертирование в авто-свойство:
public int Value
{
    [Pure]
    get { return this.value; }
    [DebuggerHidden]
    get { this.value = value; }
}

Немного корёжит форматирование:
public int Value { [Pure]
get; [DebuggerHidden]
set; }


Это всё мелочи, но они иногда досаждают, когда атрибуты достаточно важны (как тот же [Pure] из контрактов).

ReSharper 4.5 Full Edition build 4.5.1231.7 on 2009-04-08T16:10:26

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.