Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将标记属性的信息传递到自定义属性_C#_.net_Reflection_Custom Attributes_System.reflection - Fatal编程技术网

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

C# 将标记属性的信息传递到自定义属性,c#,.net,reflection,custom-attributes,system.reflection,C#,.net,Reflection,Custom Attributes,System.reflection,我正在尝试创建一个自定义属性,其中一个参数是使用该属性的属性的属性名 我想这在打印出来时没有多大意义,所以这里有一个我正在尝试做的示例: [Test(x => x.Paws)] public Dog Dog { get; set; } 如您所见,我使用了Dog上的属性,并使用lambda表达式将Dog的paws属性传递给属性的构造函数 这可能吗? 到目前为止,我提出的最佳方案如下: [Test(nameof(Dog.Paws)] public Dog Dog { get; set; }

我正在尝试创建一个自定义属性,其中一个参数是使用该属性的属性的属性名

我想这在打印出来时没有多大意义,所以这里有一个我正在尝试做的示例:

[Test(x => x.Paws)]
public Dog Dog { get; set; }
如您所见,我使用了Dog上的属性,并使用lambda表达式将Dog的paws属性传递给属性的构造函数

这可能吗? 到目前为止,我提出的最佳方案如下:

[Test(nameof(Dog.Paws)]
public Dog Dog { get; set; }
这个解决方案不是最优的原因是没有类型检查(我也可以写nameof(Cat.Tail)


所以我的问题是:这可能吗?如果可能的话,人们会怎么做?

不幸的是,这无法做到。属性只接受选择的几种类型作为参数:

发件人:

  • 基本类型(bool、byte、char、int等)
  • 类型(
    System.Type
  • 列举
  • 反对
  • 一维阵列

不过,您使用
nameof()
的方法很好。请记住,您也可以使用
typeof()

不幸的是,这无法完成。属性仅接受少数类型作为参数:

发件人:

  • 基本类型(bool、byte、char、int等)
  • 类型(
    System.Type
  • 列举
  • 反对
  • 一维阵列

不过,您使用
nameof()的方法是很好的。请记住,您可以使用
typeof()
还有!

不,您不能在属性中使用lambda表达式。我只需使用
nameof
然后添加单元测试,以确保所有属性值都是适当的。不,您不能在属性中使用lambda表达式。我只需使用
nameof
然后添加单元测试,以确保所有属性值是合适的。这就是我害怕的。哦,好吧,我会用nameof代替。这就是我害怕的。哦,好吧,我会用nameof代替。