C# 为什么Microsoft.NetCore.Analyzers CA2000中的分析结果存在差异

C# 为什么Microsoft.NetCore.Analyzers CA2000中的分析结果存在差异,c#,idisposable,fxcop,C#,Idisposable,Fxcop,我先前的问题太抽象,而且被否决了。你可以在 我想从DAC工厂退回两件物品。即加载的数据集和使用的参数列表。这里有两个简化的实现。其中只有一个触发CA2000。 Tuple和POCO有什么特别之处 class Factory { public Tuple<DataSet, IReadOnlyDictionary<string, object>> CreateWrapped() { var ds = new DataSet();//why do

我先前的问题太抽象,而且被否决了。你可以在

我想从DAC工厂退回两件物品。即加载的数据集和使用的参数列表。这里有两个简化的实现。其中只有一个触发CA2000。 Tuple和POCO有什么特别之处

class Factory
{
    public Tuple<DataSet, IReadOnlyDictionary<string, object>> CreateWrapped()
    {
        var ds = new DataSet();//why does FxCop complains CA2000 here?
        var p = new Dictionary<string, object>();
        return Tuple.Create(ds, (IReadOnlyDictionary<string, object>)p);
    }
    public PocoResult CreatePoco()
    {
        var ds = new DataSet();//why does FxCop happy here?
        var p = new Dictionary<string, object>();
        return new PocoResult(ds, p);
    }
}
类工厂
{
公共元组CreateWrapped()
{
var ds=new DataSet();//为什么FxCop在这里抱怨CA2000?
var p=新字典();
返回Tuple.Create(ds,(IReadOnlyDictionary)p);
}
公共PocoResult CreatePoco()
{
var ds=new DataSet();//为什么FxCop在这里很开心?
var p=新字典();
返回新的PocoResult(ds,p);
}
}
下面是POCO的定义。以防你认为这很重要

class PocoResult
{
    public PocoResult(DataSet dataSet, IReadOnlyDictionary<string, object> selectParameters)
    {
        DataSet = dataSet;
        SelectParameters = selectParameters;
    }
    public DataSet DataSet { get; }
    public IReadOnlyDictionary<string, object> SelectParameters { get; }
}
类PocoResult
{
公共PocoResult(数据集,IREADONLYDICTIONAL selectParameters)
{
数据集=数据集;
SelectParameters=SelectParameters;
}
公共数据集数据集{get;}
公共IReadOnlyDictionary SelectParameters{get;}
}

是否有另一条规则规定,
PocoResult
应该实现
IDisposable
?我不知道我们应该寻找它。“错误列表”窗口中没有任何其他条目。使用PocoDisposable也会让分析器感到高兴。