В C# я могу заставить автосвойство выполнить некоторую дополнительную работу со справкой атрибута?

Этот вопрос связан, но не то же как это: Как Вы даете Автосвойству C# значение по умолчанию?

Я люблю автосвойства, но иногда я должен сделать что-то вроде этого:

private string someName;

public string SomeName
{
    get
    {
       return someName;
    }

    set
    {
        someName = value.Trim();
    }
}

Если я должен много раз делать то же самое, я начинаю жаль, что я не должен был вводить столько строк/символов кода. Я хочу смочь прервать значение и изменить его вид подобных так:

public string Somename
{
    get;

    [Trim]
    set;
}

Существует ли способ сделать что-то вроде этого? Это было бы глупо? Существует ли лучший путь? Какие-либо другие замечания общего порядка? Я признаю, пример, который я дал, является немного гипотетическим, и я не могу определить местоположение точного кода теперь, который заставил меня думать об этом.

Спасибо.

8
задан Community 23 May 2017 в 12:01
поделиться

2 ответа

Вы можете сделать это, используя AOP, как в Postsharp, но почему вы просто не используете резервное хранилище в этом случае?

Также, для полноты, вы, вероятно, должны сделать следующее:

someName = (value ?? string.Empty).Trim();

чтобы также обрабатывать null.

Обратите внимание, что если вы имеете в виду конкретный случай, в котором требуется больше работы, вам, вероятно, следует спрашивать о нем, а не о тривиальном случае, который вы указали в своем вопросе

4
ответ дан 5 December 2019 в 18:57
поделиться

Нет способа сделать это. Автоматические свойства C # предназначены для того, чтобы быть синтаксическим сахаром только для самых тривиальных свойств и не более того.

5
ответ дан 5 December 2019 в 18:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: