gpt4 book ai didi

C# 接口(interface)在不同的 svn 项目之间共享

转载 作者:太空宇宙 更新时间:2023-11-03 15:48:49 25 4
gpt4 key购买 nike

我是一名 C++ 人员,必须处理一些 C# 项目,因此我有疑问。将两个项目放在不同的 svn 服务器上,我需要它们共享接口(interface)类。在C#中应该如何解决。
例如,我有一个 cs 文件,它有用于将数据传递给接口(interface)的接口(interface)和类,即

Public Class data
{
public int a;
public int b;
}
Public Interface Ifoo
{
int foo(data);
}

该接口(interface)在ProjectA中实现,供ProjectB使用。
我希望能够选择接口(interface)的实现,以便在 ProjectB 的测试中我将使用 Ifoo 接口(interface)的特殊实现。选择不同的 dll 使用:

 Assembly assembly = Assembly.LoadFrom(asm_name);
fooer = assembly.CreateInstance(class_name) as Ifoo;

Ifoo接口(interface)应该放在哪里?
我认为它应该放在 ProjectA svn repo 中(因为 ProjectA 是接口(interface)的所有者),然后通过 ProjectB 的 check out 将其作为外部 check out 。

你能告诉我这种情况下的经验法则是什么吗?

BR
克日什托夫

最佳答案

首先,无论您决定将接口(interface)和相关数据类(项目 A 或项目 B svn 或新的)放在一起,第一个(也是非常讨厌的)建议是将它们放在自己的库中( DLL),不依赖于其他对象,因此可以轻松地在不同项目之间共享它。

要在不同的项目上使用它(不管是否在另一个 svn 存储库上),您必须向该项目授予对该接口(interface)/数据类的物理访问权限。在它自己的 dll 上并且不受要求其他对象的约束,在项目中添加库的引用是一件简单的事情。

有了这两个项目的本地副本,您不需要将库本身复制到另一个项目中。

无论如何,你都要考虑好你的界面和数据,不要经常改动它们,以免项目之间出现兼容性问题。如果因为新功能需要向界面“添加”一些东西,请改为创建一个新界面(并将其放在其他 DLL 上)。这样,您将保持与未实现新功能的其他项目的兼容性。

如果与接口(interface)关联的数据非常具体,以至于任何实现该接口(interface)的类都只能由项目 A 使用,那么,放置 DLL 的明显位置是在项目 A 中。通常情况下,当一个软件有能力使用插件。这些接口(interface)位于一个 dll 中,可以“公开”提供给无法访问主项目本身的插件开发人员。这非常简单,可以让 DLL 可供下载。 Beijng 在主项目和插件上使用的 SAME dll,不会有问题(除了不更改它的原因)。

但是如果你的界面更“通用”并且用于创建类似框架的东西,不同的项目(不相关/不依赖)可以单独使用它,那么建议在第三个项目中分离它(与它自己的 svn) 更有趣。使用关于此接口(interface)开发的良好策略,维护框架的问题会更少。

在评论中你说你可以将“接口(interface)”与项目 A 相关联,但是如果你可以在项目 B 中使用它而不涉及项目 A,你也可以将接口(interface)与项目 B 相关联,因此,将接口(interface)/相关数据移动到单独项目的选项是更可取的。

在任何情况下,下划线的实现都是无关紧要的,因为我们在 C# 中使用接口(interface)的主要原因正是能够以“通用方式”使用一个对象,而不必(必须)关心它是如何实现的.

关于C# 接口(interface)在不同的 svn 项目之间共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26890408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com