gpt4 book ai didi

c# - 常量、Web 服务、命名空间和共享程序集

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

我的项目中有大量程序集。

  • Contract.Common;包含所有常用的 DataContract
  • Contract.Sync;更多功能
  • 契约(Contract)任务;更多功能
  • 另外六个组件随着产品的发展而具有更多功能。

通常,因为 Contract.Common 被其他 WCF 契约(Contract)程序集引用。遵循一些最佳实践阅读更多 WCF Architecture & Evoltion / Version ,有一个静态常量类,例如我用于所有合约的 NamespacePrefix。

这是我第一次开发一个独立于通用合约的新合约。我们称它为 Contract.NewStuff

按照规范,新合约在我的公共(public)合约库中重用 namespace 前缀常量(这意味着它需要引用它)。

对于我的网络服务客户端,我引用我的契约(Contract)程序集并使用它来连接到各种网络服务并调用它们。

问题

由于 Contract.NewStuff 仅在编译时使用常量的公共(public)库(没有运行时程序集),我如何阻止我的客户也不得不引用我的 Contract。常见的程序集?

我知道我的 Common contracts 只是一个 20KB 的程序集,我不应该为此担心。但是有 300,000 多台机器使用 Contract.NewStuff,我不明白为什么我应该浪费资源发送那个程序集,在未来的版本中更新它等等......


更新 1

使用 Add file as link选项。没有引用,只有一个地方可以编辑常量。

最佳答案

您可以将具有常量的类移动到新程序集,以便 Contract.Common 和 Contract.NewStuff 将引用它。我想你甚至可以在编译后“丢弃带有常量的程序集”,因为常量在 C# 编译时嵌入到 IL 代码中,并且不会在运行时每次需要它们时从常量程序集中读取。
另一个选择是将常量类“链接”到您的 Contract.NewStuff 程序集。在这种情况下,您将在两个项目中没有文件常量类重复。 Add File As Link

关于c# - 常量、Web 服务、命名空间和共享程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12195123/

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