Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何修复CA1000不在泛型类型上声明静态成员_C#_.net Core - Fatal编程技术网

C# 如何修复CA1000不在泛型类型上声明静态成员

C# 如何修复CA1000不在泛型类型上声明静态成员,c#,.net-core,C#,.net Core,我使用的是Microsoft.codealysis.FxCopAnalyzers,而CA1000规则如下所示 不要在泛型类型上声明静态成员 如何纠正违规行为 若要修复违反此规则的情况,请删除静态成员或将其更改为实例成员 何时取消显示警告: 不要抑制来自此规则的警告。以易于理解和使用的语法提供泛型可以减少学习所需的时间,并提高新库的采用率 我的代码如下。Success方法是触发规则的方法 public class ResultResponse { internal ResultRespon

我使用的是
Microsoft.codealysis.FxCopAnalyzers
,而
CA1000
规则如下所示

不要在泛型类型上声明静态成员

如何纠正违规行为

若要修复违反此规则的情况,请删除静态成员或将其更改为实例成员

何时取消显示警告:

不要抑制来自此规则的警告。以易于理解和使用的语法提供泛型可以减少学习所需的时间,并提高新库的采用率

我的代码如下。
Success
方法是触发规则的方法

public class ResultResponse
{
    internal ResultResponse(bool isSuccess)
    {
        IsSuccess = isSuccess;
    }

    public bool IsSuccess { get; }

    public static ResultResponse Failed()
        => new ResultResponse(false);
}

public class ResultResponse<T> : ResultResponse
{
    internal ResultResponse(T value, bool isSuccess)
        : base(isSuccess)
    {
        Value = value;
    }

    public T Value { get; }

    public static ResultResponse<T> Success(T value)
        => new ResultResponse<T>(value, true);
}
Success
方法移动到非泛型类型是否正确

public class ResultResponse
{
    internal ResultResponse(bool isSuccess)
    {
        IsSuccess = isSuccess;
    }

    public bool IsSuccess { get; }

    public static ResultResponse Failed()
        => new ResultResponse(false);

    public static ResultResponse<T> Success<T>(T value)
        => new ResultResponse<T>(value, true);
}

public class ResultResponse<T> : ResultResponse
{
    internal ResultResponse(T value, bool isSuccess)
        : base(isSuccess)
    {
        Value = value;
    }

    public T Value { get; }
}
这是一个不错的方法。请注意,现在,您可以调用:

ResultResponse.Success(someat);
编译器将从
someat
推断泛型类型。在以前的代码中,由于您在泛型中调用了
static
方法,因此必须(“冗余地”)指定类型参数:

ResultResponse<int>.Success(someat);
ResultResponse.Success(somet);