首页 > 解决方案 > 对接口进行编程是否允许您不重新编译代码?

问题描述

只是一个一般性问题,对接口进行编程是否允许您的代码不重新编译。我们只需要部署更改而不需要重新编译整个应用程序,对吗?

如果我们需要重新编译整个应用程序,接口对系统中模块的松散耦合有何帮助?

标签: c#oopinterface

解决方案


不是自动的,但如果您正确地构建项目,它可能会。

考虑以下类型,每个类型都在他们自己的项目中,以及以下依赖项

  • MyApplication 依赖于一切
  • IMyInterface 不依赖任何东西
  • MyClass 依赖于 IMyInterface
  • MyImplementation 依赖于 IMyInterface(并实现 IMyInterface)

现在 MyApplication 可以创建一个 MyImplementation 对象并将其提供给 MyClass。但是,由于 MyClass 不直接依赖于 MyImplementation,因此如果 MyImplementation 发生更改,则不需要重新编译。仅当 IMyInterface 更改时。至少如果您使用增量编译。更现实地说,您可能会有一个 IOC 容器来为您完成所有对象构造。

您可以将项目的依赖关系图视为有向循环图。如果项目中的任何内容更改了依赖它的所有内容,则需要直接或间接更改。如果您可以减少对最频繁更改的代码的依赖,则可以优化构建时间。但是您还应该考虑到 c# 的整体编译速度相当快,并且构建时间受到许多其他因素的影响。

这假定项目是同一解决方案的一部分,对于程序集引用或动态加载的 dll,其他规则适用。


推荐阅读