C# 4.0 未命中自定义属性

C# 4.0 未命中自定义属性,c#-4.0,aop,custom-attributes,custom-attribute,C# 4.0,Aop,Custom Attributes,Custom Attribute,我已经创建了一个自定义属性,当它被命中时写入控制台,但是它似乎没有被命中。这是微软教程(http://msdn.microsoft.com/en-us/library/sw480ze8.aspx)并在2010.NET4上运行。我猜一定是我做错了什么,但我看不出是什么。有人能帮忙吗 这就是属性,它的代码永远不会被命中 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)] public class Author : At

我已经创建了一个自定义属性,当它被命中时写入控制台,但是它似乎没有被命中。这是微软教程(http://msdn.microsoft.com/en-us/library/sw480ze8.aspx)并在2010.NET4上运行。我猜一定是我做错了什么,但我看不出是什么。有人能帮忙吗

这就是属性,它的代码永远不会被命中

[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.");
    }
}
    static void Main(string[] args)
    {
        Ackerman author1 = new Ackerman();
        Console.ReadLine();
    }

谢谢

未创建类上属性的实例,然后创建类的实例。只有这样,你才会明确要求他们这样做:

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

此代码将触发您的
Console.WriteLine(string.Format(“author{0}刚刚创建”,name))

谢谢你,你完全正确。但是,如果必须单独调用属性,那么拥有属性有什么意义呢?属性在许多情况下都很有用,通常用于声明式编程。您可以阅读一些标准属性,如Serializable、DataMember、ServiceContract等。例如,您可以使用Author属性来显示特定Author的所有类。您还应该阅读有关面向方面编程的内容,因为它与您尝试使用attributes所做的几乎完全相同。该属性是针对类型定义的,而不是针对类型的实例的,因此除非您尝试检查它,否则您将看不到调用的属性构造函数