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);