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# 解耦代码后,当类库使用相同的代码时,该怎么办?_C#_Decoupling - Fatal编程技术网

C# 解耦代码后,当类库使用相同的代码时,该怎么办?

C# 解耦代码后,当类库使用相同的代码时,该怎么办?,c#,decoupling,C#,Decoupling,我一直在稳步地将我的项目解耦到主控制台应用程序和几个类库中 它是一个基于OWIN的服务器,承载自定义Alexa技能与其端点之间的通信。这利用了JSON通信 我的应用程序还与Microsoft Azure FaceAPI通信,后者也利用JSON通信 最后,应用程序还使用JSON检索和保存基于web的配置UI的设置 这意味着有三个类库和主控制台程序,它们利用NewtonsoftJson来序列化和反序列化JSON数据 我创建了一个helper类来处理所有序列化 然而,为了保持类库解耦,并在其他应用程序

我一直在稳步地将我的项目解耦到主控制台应用程序和几个类库中

它是一个基于OWIN的服务器,承载自定义Alexa技能与其端点之间的通信。这利用了JSON通信

我的应用程序还与Microsoft Azure FaceAPI通信,后者也利用JSON通信

最后,应用程序还使用JSON检索和保存基于web的配置UI的设置

这意味着有三个类库和主控制台程序,它们利用NewtonsoftJson来序列化和反序列化JSON数据

我创建了一个helper类来处理所有序列化

然而,为了保持类库解耦,并在其他应用程序中可重用,这意味着我必须在每个类库中显示相同的Helper类

就其本身而言,似乎每个类库中都有代码是可以的

但是,当我在所有类库和主应用程序中的解决方案资源管理器中看到该类时,它看起来像是一堆重复的代码

在解耦代码时,以这种方式重用类是典型的吗

也许JSON助手应该是它自己的类库

类库已经依赖于NewtonSoft,因此创建另一个依赖项似乎很愚蠢。。。困惑

也许可以重复这样的代码

编辑:我的助手类将包含如下方法:

  public string SerializeToString(object obj)
    {
        using (var streamWriter = new StringWriter())
        {
            using (var jsonWriter = new JsonTextWriter((streamWriter)))
            {
                serializer.Serialize(jsonWriter, obj);
            }
            return streamWriter.ToString();
        }
    }
它们可以被称为:

return new NewtonsoftJsonSerializer().SerializeToString(directiveResponse)
其中,NewtonsoftJsonSerializer是帮助器类名


类似上面发布的方法在我的AlexaApi、MircosoftFaceApi和配置类库中使用。

helper类具体做什么?我正在描绘一行调用
serializer.Serialize()
的代码。如果helper类知道要序列化的类,为什么它是重复的代码,而不是特定于Skill或FaceAPI库?请提供一些代码。我有点困惑,你们是为了序列化而创建单独的项目吗?如果是这样的话,如果你这样加的话,只会增加复杂性。我想,您需要使用继承/多态性方法来处理此问题,因为所有序列化内容都需要一个项目。我在帮助类的OP中添加了一些代码片段,以更好地解释我的攻击计划。我决定取消helper类,并在每个类库中使用该类的函数和方法为什么不直接编写
JsonConvert.SerializeObject(object)
来给你一个字符串呢