0

我有以下 WCF 数据合同类:

[DataContract]
public class BinaryResponse : ResponseBase
{
    [DataMember]
    public byte[] Payload { get; set; }
}

又好又简单,完全按照我的需要工作。但是,我现在正在通过完整的代码分析规则集运行它。这会生成以下警告:

CA1819 : Microsoft.Performance : Change 'BinaryResponse.Payload' to return a collection or make it a method.

查看此错误的帮助页面后,解决方案很简单。但是,该解决方案并不真正适合 WCF 数据成员。

所以问题是,我怎样才能将这个类重构为仍可用作 WCF 数据合同并通过代码分析?

干杯

4

1 回答 1

0

您可以将字节数组更改为可枚举或集合,如下所示:

[DataContract]
public class BinaryResponse : ResponseBase
{
    [DataMember] public ICollection<byte> Payload { get; set; }
}

或者您可以将 byte[] 属性保留在私有数组中并将其包装在 ICollection 属性中(如果您需要内部数组):

[DataContract]
public class BinaryResponse : ResponseBase
{
    // this is NOT a member of the DataContract
    private byte[] payload;

    [DataMember] public ICollection<byte> Payload {
        get { return this.payload; }
        set { this.payload = value.toArray(); }
    }
}
于 2012-04-18T16:20:37.463 回答