将标记 属性 的信息传递到自定义属性中

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()