[MyAttribute(Name = value)]中的"Name = value"是什么

Ros*_*oss 0 c# attributes custom-attributes

我不知道用什么语法谷歌这个.

考虑这个属性:

 [MyAttribute(MyOption=true,OtherOption=false)]
Run Code Online (Sandbox Code Playgroud)

那是什么Name=value部分?我如何在自己的自定义属性中实现它?

Ren*_*ogt 5

您可以通过声明公共实例(非静态)属性或字段来使用它:

[AttributeUsage(AttributeTargets.All)]
public class MyAttribute : Attribute
{
    public string TestValue { get; set; }
}

[My(TestValue = "Hello World!")]
public class MyClass{}
Run Code Online (Sandbox Code Playgroud)

所以它的工作方式几乎就像对象初始化器语法,但()代替{}.


如果为构造函数提供属性参数,则必须先传递参数:

[AttributeUsage(AttributeTargets.All)]
public class MyAttribute : Attribute
{
    public string TestValue { get; set; }

    public MyAttribute(int arg)
    {}
}

[My(42, TestValue = "Hello World!")]
public class MyClass{}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请阅读本教程.