2015-11-16 2 views
2

В C# DataAnnotations вы можете указать некоторые свойства классов, методов или свойств.Как аннотации данных преобразуются во время выполнения?

Мой вопрос: что именно происходит за сценой? Использует ли шаблон декоратора и переносит класс в другой класс, который также содержит дополнительное поведение (например, длину строки, диапазон числа и т. Д.), Или это происходит совершенно по-другому?

ответ

2

В дополнение к ответу Дэна, лучший способ понять их, чтобы создать один ...

void Main() 
{ 
    Console.WriteLine (Foo.Bar.GetAttribute<ExampleAttribute>().Name); 
    // Outputs > random name 
} 

public enum Foo 
{ 
    [Example("random name")] 
    Bar 
} 

[AttributeUsage(AttributeTargets.All)] 
public class ExampleAttribute : Attribute 
{ 
    public ExampleAttribute(string name) 
    { 
     this.Name = name; 
    } 

    public string Name { get; set; } 
} 

public static class Extensions 
{ 
    public static TAttribute GetAttribute<TAttribute>(this Enum enumValue) 
      where TAttribute : Attribute 
    { 
     return enumValue.GetType() 
         .GetMember(enumValue.ToString()) 
         .First() 
         .GetCustomAttribute<TAttribute>(); 
    } 
} 
// Define other methods and classes here 
+0

Да спасибо за ваш ответ. Теперь это имеет смысл. –

4

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

Attributes Tutorial