首页 > 解决方案 > 为什么 Microsoft.NetCore.Analyzers CA2000 中的分析结果有差异

问题描述

我之前的问题太抽象了,被否决了。你可以在工厂方法中找到它来创建一次性容器

我想从 DAC 工厂返回两个对象。即加载的数据集和使用的参数列表。有两个实现被删减。其中只有一个会触发 CA2000。Tuple vs 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);
    }
}

下面你会看到 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; }
}

标签: c#idisposablefxcop

解决方案


推荐阅读