加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在.NET中管理依赖关系树的最佳方式是什么?

发布时间:2020-12-14 00:47:57 所属栏目:百科 来源:网络整理
导读:在我最后一个项目中,我们使用MSBuild作为脚本语言. (是的,真的!)我们还写了数百个定制的MSBuild任务,对于在C#中更有意义的部分. (我甚至写了一个MSBuild任务来生成一个MSBuild任务的样板代码,是的,它消耗了它.) 虽然我不建议任何人采取同样的方法,但我发现
在我最后一个项目中,我们使用MSBuild作为脚本语言. (是的,真的!)我们还写了数百个定制的MSBuild任务,对于在C#中更有意义的部分. (我甚至写了一个MSBuild任务来生成一个MSBuild任务的样板代码,是的,它消耗了它.)

虽然我不建议任何人采取同样的方法,但我发现非常有帮助的一件事是内置的依赖关系管理.正如你所料,很容易表达依赖关系,让MSBuild照顾满足他们.例如,我们软件中的几乎每一步都需要将某些文件集复制到某个位置.你可以很容易地写:

Step1: CopyFiles
Step2: CopyFiles,Step1

当您执行Step2时,它只会复制一次文件.

构建和满足依赖关系树在软件中很常见.我希望MSBuild团队采用其依赖管理代码,将其与MSBuild分离,并将其移动到任何可以使用它的.NET Framework中.不好意思,你觉得这是怎样管理依赖关系的最佳选择?

我想你可以使用像Spring这样的IOC容器来获得这种行为.

实例化任何只能以单例运行一次并且任务对象的构造函数运行任务的任务.然后,任何随后对该任务依赖的对象将获得对已经运行的任务的引用,并能够获取该任务的结果,或者可以推断该任务已经成功运行.

在spring配置中,最终会有许多链接在一起的任务,每个都引用其构造函数配置中的其他任务.
这种方法是最灵活的,你并不局限于“任务”或任何太重的事情.

我猜测任何工作流程库也有类似的概念.但我不是很熟悉这些.

我认为任何更小的东西,人们必须使用访问者模式滚动自己的对象图和界面,也可以使用Dictionary来保存状态.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读