У меня есть класс, который реализует IPermission
:
public class MySecurityPermission : IPermission
{
private string[] _demandRoles;
private string[] _denyRoles;
public MySecurityPermission(string[] demandRoles, string[] denyRoles)
{
this._demandRoles = demandRoles;
this._denyRoles = denyRoles;
}
}
Теперь для интерфейса IPermission требуется метод Copy()
, который я реализовал как:
public IPermission Copy()
{
return new MySecurityPermission(this._demandRoles.ToArray(), this._denyRoles.ToArray());
}
Обратите внимание, что вызовы .ToArray()
происходят потому, что он закрывает / копирует массив и возвращает новый экземпляр массива, а не передает тот же массив вокруг.
В результате получается FxCop CA2103:
"Просмотрите следующее на предмет возможной уязвимости безопасности:
В MySecurityPermission.Copy () возвращаемое значение
вызова Enumerable.ToArray (это
IEnumerable) 'передается в «MySecurityPermission»
конструктор ».
Есть ли способ "исправить" это? Я не совсем уверен, почему FxCop даже жалуется на это. Если бы кто-то мог это объяснить, это было бы здорово.