名称可以简化 - Visual Studio 2019 覆盖

Name Can Be Simplified - Visual Studio 2019 Override

我的 ASP.NET 项目中有以下代码行:

    public virtual async Task<bool> Delete(int id)
    {
        var entity = LoadById(id);
        using (IDbConnection cn = new SqlConnection(_conn))
        {
            cn.Open();
            /* Do Not Remove <T> Variables, its required even though the compiler notes its not required */
            var result = await cn.DeleteAsync<T>(entity);

            return result;
        }
    }

这里是 class 定义:

public abstract class DatabaseRepository<T> where T : class, IDatabaseModel, new()

Visual studio 2019 显示一条警告,提示我需要从我的 DeleteAsync 方法中删除 T 变量,因为它不需要并且可以简化。问题是我正在使用的扩展程序 (Dapper) 需要它。一旦删除 T 引用,我的代码就会抛出运行时异常。

发件人:

var result = await cn.DeleteAsync<T>(entity);

收件人:

var result = await cn.DeleteAsync(entity);

我的第一个想法是在此行旁边添加注释,以防止其他开发人员删除它。但是我开始思考,我必须在代码中进行某种类型的覆盖,以防止它显示为警告。某种类型的特殊注释或我可以放在该行上方以防止 visual studio 显示该消息的内容。到目前为止,我已经在网上查过了,找不到任何东西。我正在寻找可以放入代码中的东西,而不是 Visual Studio 中的设置更改。

与其添加注释,不如添加一个 SuppressMessage,这将首先阻止警告。

[SuppressMessage("Reason", "Whatever the id is", Justification="Do Not Remove <T> Variables, its required even though the compiler notes its not required")]
public virtual async Task<bool> Delete(int id)
{
    var entity = LoadById(id);
    using (IDbConnection cn = new SqlConnection(_conn))
    {
        cn.Open();
        var result = await cn.DeleteAsync<T>(entity);

        return result;
    }
}