c# - 只使用方法的实现?

标签 c# resharper

在 ISerialized 中,Resharper 提示说“只使用了 'SerializeShape 的实现”。还有什么我应该做的,还是在这种情况下我对界面的使用只是过度杀戮?我的“要求”是任何使用类 Shape 实现 SerializeShape。我试图以一种合理的、传统的方式使用接口(interface),但也许我不是?

我有这样的界面:

namespace Shapes
{
    internal interface ISerialized<in T>
    {
        string SerializeShape();

    }
}

我有这样的一类:
using System.Runtime.Serialization;
using Newtonsoft.Json;

namespace Shapes
{

    [DataContract]
    public class Shape : ISerialized<Shape>
    {
        [DataMember] public double Perimeter { get; set; }
        [DataMember] public double Area { get; set; }
        [DataMember] public string ShapeName { get; set; }
        [DataMember] public string ShapeException { get; set; }

        public string SerializeShape(Shape shape)
        {
            return JsonConvert.SerializeObject(shape, Formatting.Indented);
        }
    }
}

最佳答案

我知道这是一个老问题,但我遇到了类似的情况。
似乎弹出此警告是因为您没有从外部类(class)中使用它。也许您只是没有创建对它的调用,或者在我的情况下,它仅在实现接口(interface)的类内部使用。
如果在您编写接口(interface)或实现接口(interface)时立即弹出此警告,那么您根本还没有使用该方法。一旦您使用该接口(interface)从其他代码调用该方法,警告就会消失。
就我而言,该方法可能曾一度在类外部使用,但通过代码的迭代,它现在只在内部使用。如果我愿意,我可以从 public 更改方法至private并从接口(interface)中删除方法声明。
旁白:因为我只有一个实现接口(interface)的类,所以我可以完全删除接口(interface),只拥有自己的实现类,这将完全避免这个警告。然而,这个接口(interface)有几个引用,包括自动化测试。删除界面超出了我需要/想要进行的更改的范围,所以我不打算这样做。

关于c# - 只使用方法的实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52344873/

相关文章:

c# - 通用约束忽略协方差

c# - 有没有一种简单的方法可以混合两个 System.Drawing.Color 值?

c# - 如何强制 ReSharper 始终将第一个参数与方法放在同一行?

c# - DI 构造函数的模板化重构

resharper - 我可以让 R# 智能感知选择第一个列表项吗?

c# - 如何将 DateTime 设置为 ValuesAttribute 进行单元测试?

c# - 用c#实现水平滚动

.net - 将我的类/接口(interface)安排/组织到文件夹中?不使用文件夹更改命名空间(Resharper : Namespace Provider = false)

c# - Guid.NewGuid() 与 new Guid()

resharper - 按文件类型过滤 ReSharper 的 "find usages"