将标记 属性 的信息传递到自定义属性中
Passing info of marked property into custom attribute
我正在尝试创建一个自定义属性,其中一个参数是使用该属性的 属性 的 属性 的名称。
我想打出来的时候没有多大意义,所以这是我正在尝试做的一个例子:
[Test(x => x.Paws)]
public Dog Dog { get; set; }
如您所见,我在 Dog 上使用了属性,并使用 lambda 表达式传递 paws 属性 的狗到属性的构造函数。
这可能吗?
到目前为止我想出的最好的是:
[Test(nameof(Dog.Paws)]
public Dog Dog { get; set; }
这个解决方案不是最优的原因是没有类型检查(我也可以写 nameof(Cat.Tail)。
所以我的问题是;这可能吗?如果是这样,人们会怎么做?
很遗憾,这无法完成。属性只接受 select 几种类型作为参数:
发件人:https://msdn.microsoft.com/en-us/library/aa288454(v=vs.71).aspx#vcwlkattributestutorialanchor1
- Primitive types (bool, byte, char, int, etc...)
- Strings
- Types (
System.Type
)
- enums
- object
- one dimensional arrays
不过,您使用 nameof()
的方法很好。请记住,您也可以使用 typeof()
!
我正在尝试创建一个自定义属性,其中一个参数是使用该属性的 属性 的 属性 的名称。
我想打出来的时候没有多大意义,所以这是我正在尝试做的一个例子:
[Test(x => x.Paws)]
public Dog Dog { get; set; }
如您所见,我在 Dog 上使用了属性,并使用 lambda 表达式传递 paws 属性 的狗到属性的构造函数。
这可能吗? 到目前为止我想出的最好的是:
[Test(nameof(Dog.Paws)]
public Dog Dog { get; set; }
这个解决方案不是最优的原因是没有类型检查(我也可以写 nameof(Cat.Tail)。
所以我的问题是;这可能吗?如果是这样,人们会怎么做?
很遗憾,这无法完成。属性只接受 select 几种类型作为参数:
发件人:https://msdn.microsoft.com/en-us/library/aa288454(v=vs.71).aspx#vcwlkattributestutorialanchor1
- Primitive types (bool, byte, char, int, etc...)
- Strings
- Types (
System.Type
)- enums
- object
- one dimensional arrays
不过,您使用 nameof()
的方法很好。请记住,您也可以使用 typeof()
!