将属性添加到C#属性集参数

时间:2010-11-03 18:59:47

标签: c# attributes properties

现在,在没有使用属性的情况下,我得到了这个:

public void SetNumber([Array(new int[]{8})] Byte[] number)

如您所见,我将ArrayAttribute属性添加到参数中。

我想要做的是相同的但是在属性设置器上。这不起作用:

[Array(new int[]{8})]
public Byte[] SetNumber
{
  set
  {
  }
  get
  {
    return null;
  }
}

有没有办法将属性附加到set_SetNumber value方法参数?

另外,一个相关的问题。生成的两个方法(get / set)没有自定义属性。任何人都可以向我解释为什么会这样吗?

3 个答案:

答案 0 :(得分:8)

您需要使用param上的set attribute target

public Byte[] SetNumber {
  [param: Array(new int[] { 8 })]
  set {
  }
  get {
    return null;
  }
} 

至于第二个问题,自定义属性是在属性本身上设置的,而不是在属性访问器方法上设置的。

此外,如果您的ArrayAttribute仅适用于参数,则可以这样定义:

[AttributeUsage(AttributeTargets.Parameter)]
public class ArrayAttribute : Attribute {
  // ...
}

答案 1 :(得分:0)

你不这样做,就像你在第一个例子中所做的那样创建一个方法。你不能将除值之外的任何东西传递给集合。

public Byte[] TheNumber
{
    private set;
    get
    {
        return null;
    }
}

public void SetNumber([Array(new int[] { 8 })] Byte[] number)
{
    this.TheNumber = number;
}

答案 2 :(得分:0)

我不确定,但我的猜测是你无法做你想做的事情 - 你没有公开setter value参数来应用属性。

至于你的第二个问题,一个属性与它的吸气剂和放大器不同。二传手术方法。您可以将属性应用于setter方法,如下所示:

public Byte[] SetNumber
{
  [Array(new int[]{8})]
  set
  {
  }
  get
  {
    return null;
  }
}