Добавление атрибутов в параметр набора свойств C # - PullRequest
7 голосов
/ 03 ноября 2010

Прямо сейчас, без использования свойств, у меня есть это:

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 ]

8 голосов
/ 03 ноября 2010

Вам необходимо использовать целевой атрибут param на set:

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

Что касается второго вопроса, пользовательский атрибут задается для самого свойства, а не для методов доступа к свойству.

Кроме того, если ваш ArrayAttribute относится только к параметрам, его можно определить так:

[AttributeUsage(AttributeTargets.Parameter)]
public class ArrayAttribute : Attribute {
  // ...
}
0 голосов
/ 03 ноября 2010

Я не уверен, но я предполагаю, что вы не можете делать то, что хотите - параметр setter value не доступен для применения атрибута.

А что касается вашего второго вопроса, свойство отличается от его методов получения и установки. Вы можете применить атрибут к методу установки следующим образом:

public Byte[] SetNumber
{
  [Array(new int[]{8})]
  set
  {
  }
  get
  {
    return null;
  }
}
0 голосов
/ 03 ноября 2010

Вы не делаете этого, создайте метод так же, как вы делали в первом примере.Вы не можете передать в набор ничего, кроме значения.

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

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