Изменить поведение автоматического свойства с помощью пользовательского атрибута

У меня есть класс с двумя разными свойствами, которые сопоставляются с одним и тем же значением:

class MyClass {
    public int Number { get; set; }
    public string NumberString {
        get { return Number.ToString(); }
        set { Number = int.Parse( value ); }
    }
}

Второе свойство (здесь NumberString) просто получает или задает первое свойство (здесь Number), используя другой тип. Код довольно тривиален, но приводит к большому количеству шаблонного кода, когда у меня есть многие из этих «приятельских» свойств.

Можно ли выполнить преобразование с использованием пользовательского свойства? Я бы предпочел, чтобы я мог написать второе свойство примерно так:

[MapsTo(nameof(Number))]
public string NumberString { get; set; }

Затем атрибут должен быть в состоянии выполнить преобразование для меня (возможно, на основе некоторых правил, которые я устанавливаю в зависимости от типа).

У меня сложилось впечатление, что это можно сделать с помощью чего-то вроде PostSharp, но возможно ли это с помощью пользовательских атрибутов?


person Mikkel R. Lund    schedule 10.02.2017    source источник
comment
Нет, по крайней мере, пока. Потенциальная будущая функция языка C# связана с такими вещами, но ее пока нет.   -  person Jon Skeet    schedule 10.02.2017
comment
Нет, это невозможно в целом, как вы описываете, только с пользовательскими атрибутами. PostSharp - это путь.   -  person Evk    schedule 10.02.2017
comment
Используйте Reflection, чтобы сделать это самостоятельно, проверьте, применяется ли атрибут, и настройте значение свойства.   -  person Mrinal Kamboj    schedule 10.02.2017