现在,在没有使用属性的情况下,我得到了这个:
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)没有自定义属性。任何人都可以向我解释为什么会这样吗?
答案 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;
}
}