获取 属性 值以在自定义属性中使用
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);
}
}
希望这对您的工作有所帮助。
我一直在寻找如何从自定义属性代码中获取 属性 值的示例。
示例仅供说明:我们有一本简单的书 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);
}
}
希望这对您的工作有所帮助。