我在不同的Visual Studio解决方案中的两个不同项目中使用相同的常量。
项目1是ASP.NET WEB API和
项目2是客户端Web应用程序。
常数示例:
1. BUYING_RATE
2. THRESHOLD_LIMIT
等
我的问题是。
我应该创建一个新的库项目来处理常量并在两个项目中共享这个dll吗?我想避免 duplacate代码在两个不同的项目中
注1:由于某些限制,我无法在一个解决方案中添加这两个项目(API项目和客户端项目),因此请忽略此 注2:这两个项目都由我管理
另一种情况是。 ASP.NET WEB API也将被第三方使用。所以我应该向他们提供dll-s或API文档就足够了。
或者我在设计上错了。如果是有更好的解决方案,那么还有其他选择来解决这个问题
提前致谢
答案 0 :(得分:1)
您可以使用NuGet来共享常量,但我不会。主要问题是您必须事先计划您的常量,否则NuGet出版将延迟您的进度。
使用共享库时,请考虑使用变量而不是常量。通常情况下,您需要更改常量值,并且不希望发出完全重建。常量值将编译到引用它们的程序集中。变量在运行时得到评估。
制作共享库时,请考虑提供静态可访问的实例容器。它通常可用于为不同的读者实例提供不同的半常数值集。
//Constant-provider assembly code. Separate library that is.
public class MyConstants
{
//Gets compiled into user code. Changing value -> rebuild all clients.
//public const double BUYING_RATE = 0.5;
//Gets evaluated in run-time. Changing value -> clients get new value.
public readonly double BUYING_RATE = 0.5;
private static MyConstants _default;
static MyConstants()
{
_default = new MyConstants();
}
//Provide default instance. You can change it in run-time when needed.
public static Default
{
get
{
return _default;
}
}
}
//Constant-user assembly code. Sample usage code for reader assemblier.
private class User
{
public void Method1()
{
... = MyConstants.Default.BUYING_RATE;
}
}