微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

在我最后一个项目中,我们使用MSBuild作为脚本语言. (是的,真的!)我们还写了数百个定制的MSBuild任务,对于在C#中更有意义的部分. (我甚至写了一个MSBuild任务来生成一个MSBuild任务的样板代码,是的,它消耗了它.)

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

Step1: copyFiles
Step2: copyFiles,Step1

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

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

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

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

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

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

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

原文地址:https://www.jb51.cc/javaschema/281846.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐