【发布时间】:2017-09-14 14:31:19
【问题描述】:
我正在尝试创建一个自定义属性,其中一个参数是使用该属性的属性的名称。
我猜这在输入时没有多大意义,所以这是我正在尝试做的一个示例:
[Test(x => x.Paws)]
public Dog Dog { get; set; }
如你所见,我在Dog上使用了属性,并使用lambda表达式将dog的paws属性传递给属性的构造函数。 p>
这可能吗? 到目前为止,我想出的最好的是:
[Test(nameof(Dog.Paws)]
public Dog Dog { get; set; }
这个解决方案不是最优的原因是没有类型检查(我也可以写nameof(Cat.Tail)。
所以我的问题是;这可能吗?如果是这样,如何做到这一点?
【问题讨论】:
-
不,您不能在属性中使用 lambda 表达式。我只会使用
nameof,然后添加一个单元测试以确保所有属性值都是合适的。
标签: c# .net reflection custom-attributes system.reflection