c# - 对接口进行编程是否允许您不重新编译代码?
问题描述
只是一个一般性问题,对接口进行编程是否允许您的代码不重新编译。我们只需要部署更改而不需要重新编译整个应用程序,对吗?
如果我们需要重新编译整个应用程序,接口对系统中模块的松散耦合有何帮助?
解决方案
不是自动的,但如果您正确地构建项目,它可能会。
考虑以下类型,每个类型都在他们自己的项目中,以及以下依赖项
- MyApplication 依赖于一切
- IMyInterface 不依赖任何东西
- MyClass 依赖于 IMyInterface
- MyImplementation 依赖于 IMyInterface(并实现 IMyInterface)
现在 MyApplication 可以创建一个 MyImplementation 对象并将其提供给 MyClass。但是,由于 MyClass 不直接依赖于 MyImplementation,因此如果 MyImplementation 发生更改,则不需要重新编译。仅当 IMyInterface 更改时。至少如果您使用增量编译。更现实地说,您可能会有一个 IOC 容器来为您完成所有对象构造。
您可以将项目的依赖关系图视为有向循环图。如果项目中的任何内容更改了依赖它的所有内容,则需要直接或间接更改。如果您可以减少对最频繁更改的代码的依赖,则可以优化构建时间。但是您还应该考虑到 c# 的整体编译速度相当快,并且构建时间受到许多其他因素的影响。
这假定项目是同一解决方案的一部分,对于程序集引用或动态加载的 dll,其他规则适用。
推荐阅读
- android - 即使路径正确,Unity 也无法选择 Android SDK
- dart - Firestore- Flutter array contains
- django - Django Rest Framework - 对依赖于另一个反向关系的反向相关表的数据进行序列化
- node.js - 节点请求模块未返回正确的 statusCode
- javascript - How To Create a Timestamp In JavaScript
- android - set header and content horizontally in recyclerview android
- android - WindowManager 不允许通过触摸
- node.js - 与 webpack 捆绑时如何使 node.js 在没有 node_modules 的情况下工作?
- ios - One object in multiple sections when sorting with NSFetchedResultsController
- python - 如何使用 pydoc 仅查看文档文本