我已经创建了一个自定义属性,当它被命中时会写入控制台,但它似乎没有被击中。这是微软教程(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();
}
谢谢!
答案 0 :(得分:3)
创建类的属性实例,然后创建类的实例。只有这样你才会特别要求他们:
var attrib = author1.GetType().GetCustomAttributes(false);
此代码会触发您的Console.WriteLine(string.Format("author {0} was just created", name));