Пользовательский атрибут не ударил - PullRequest
1 голос
/ 16 марта 2012

Я создал пользовательский атрибут, который записывает в консоль при ударе, но, похоже, не ударил. Это учебное пособие по Microsoft (http://msdn.microsoft.com/en-us/library/sw480ze8.aspx), которое будет запущено в 2010 году, .net 4. Я полагаю, что я что-то делаю не так, но не понимаю, что это. Кто-нибудь может помочь?

Это атрибут, код которого никогда не нажимается

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]
public class Author : Attribute
{
    private string _name;
    private double _version;

    public Author(string name)
    {
        Console.WriteLine(string.Format("author {0} was just created", name));

        _name = name;
        _version = 1.0;
    }
}

Это класс, который использует его - он успешно записывает код в конструкторе:

/// <summary>
/// TODO: Update summary.
/// </summary>
[Author("P. Ackerman")]
public class Ackerman
{
    public Ackerman()
    {
        Console.WriteLine("I created Ackerman.");
    }
}

И это консольное приложение, которое вызывает его и успешно распечатывает код в новом конструкторе Ackerman ():

    static void Main(string[] args)
    {
        Ackerman author1 = new Ackerman();
        Console.ReadLine();
    }

Спасибо !!

1 Ответ

3 голосов
/ 16 марта 2012

Экземпляры атрибутов в классе не создаются, тогда вы создаете экземпляр класса.Только тогда вы специально запрашиваете их так:

var attrib = author1.GetType().GetCustomAttributes(false);

Этот код вызовет ваш Console.WriteLine(string.Format("author {0} was just created", name));

...