我有一个实现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为什么会抱怨它。如果有人能解释一下,那就太好了。
似乎是因为代码的执行位置而引发了规则。如果您首先创建变量,则规则将通过:
public IPermission Copy()
{
var demand = _demandRoles.ToArray();
var deny = _denyRoles.ToArray();
return new MySecurityPermission(demand, deny);
}