Автореализованные свойства поддерживают атрибуты?

   <TextBox Grid.Column="2" Height="25" IsReadOnly="True" 
                TextAlignment="Right" VerticalContentAlignment="Center" HorizontalAlignment="Left" VerticalAlignment="Center"
                Width="200"
                Text="{Binding ElementName=Mygroups,Path=DataContext.FoldernameWithPath,Mode=TwoWay}" />

Text porpert - односторонний режим связывания по умолчанию. Режим добавления = TwoWay.

6
задан Tad Donaghe 14 January 2010 в 15:58
поделиться

4 ответа

Самый легкий способ доказать это неправильно, должен просто протестировать его:

using System;
using System.ComponentModel;
using System.Reflection;

class Test
{
    [Description("Auto-implemented property")]
    public static string Foo { get; set; }  

    static void Main(string[] args)
    {
        var property = typeof(Test).GetProperty("Foo");
        var attributes = property.GetCustomAttributes
                (typeof(DescriptionAttribute), false);

        foreach (DescriptionAttribute description in attributes)
        {
            Console.WriteLine(description.Description);
        }
    }
}

Я предлагаю, чтобы Вы послали автору по электронной почте, таким образом, он может опубликовать его как опечатку. Если он подразумевал, что Вы не можете применить атрибут к полю, это даст ему шанс объяснить более тщательно.

8
ответ дан 8 December 2019 в 04:32
поделиться

Обратите внимание также, что любому свойству Automatic будут относиться к CompilerGeneratedAttribute это также.

1
ответ дан 8 December 2019 в 04:32
поделиться

Можно применить атрибуты к автоматическим свойствам без проблемы.

Кавычка из MSDN:

Атрибуты разрешены на автореализованных свойствах, но очевидно не на отступающих полях, так как это не доступно от Вашего исходного кода. Если необходимо использовать атрибут на отступающем поле свойства, просто создайте регулярное свойство.

12
ответ дан 8 December 2019 в 04:32
поделиться

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

[Serializable]
public class MyClass
{
    [field:NonSerializedAttribute()]
    public int Id
    {
        get;
        private set;
    }
}

Этот код компиляции, но это не работает. Вы можете применять атрибут к самому свойству, но вы не можете применять его для поддержки поля.

4
ответ дан 8 December 2019 в 04:32
поделиться
Другие вопросы по тегам:

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