获取 属性 值以在自定义属性中使用

Get property value to use within custom attribute

我一直在寻找如何从自定义属性代码中获取 属性 值的示例。

示例仅供说明:我们有一本简单的书 class,只有一个名字 属性。名称 属性 具有自定义属性:

public class Book
{
    [CustomAttribute1]
    property Name { get; set; }
}

在自定义属性的代码中,我想获取装饰属性的 属性 的值:

public class CustomAttribute1: Attribute
{
    public CustomAttribute1()
    {
        //I would like to be able to get the book's name value here to print to the console:
        // Thoughts?
        Console.WriteLine(this.Value)
    }
}

当然,"this.Value"不行。有什么想法吗?

好的,我明白了。这仅适用于 .Net 4.5 及更高版本。

在 System.Runtime.CompilerServices 库中,有一个 CallerMemberNameAttribute class 可用。要获取调用的名称 class,有一个 CallerFilePathAttribute class,它 returns 调用的完整路径 class 供以后与 Reflection 一起使用。两者的用法如下:

public class CustomAttribute1: Attribute
{
    public CustomAttribute1([CallerMemberName] string propertyName = null, [CallerFilePath] string filePath = null)
    {
        //Returns "Name"            
        Console.WriteLine(propertyName);

        //Returns full path of the calling class
        Console.WriteLine(filePath);
    }
}

希望这对您的工作有所帮助。