FXCop / Анализ кода для классов WCF DataContract с массивом - создает ошибку CA1819 - PullRequest
0 голосов
/ 08 апреля 2011

У меня есть следующий класс контракта данных 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, а также пройти анализ кода?

Приветствия

1 Ответ

0 голосов
/ 18 апреля 2012

Вы можете изменить байтовый массив на перечисляемый или коллекцию, как указано ниже:

[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(); }
    }
}
...