共享程序集中的静态字段

时间:2013-01-15 13:42:51

标签: c# gac

如果共享程序集(在GAC中)具有静态字段,并且字段的值已更新,那么是否会反映在引用共享程序集的客户端应用程序中? 或者客户端应用程序是否需要重建?

3 个答案:

答案 0 :(得分:5)

在.NET静态中,每个AppDomain,所以即使程序集在GAC中,其中声明的任何静态变量的范围也只存在于引用的AppDomain中。 如果你说的是一个初始化为文字的静态(独立地只读或不读),它将自动反映在使用它的所有程序集中,而不重新编译它们。

答案 1 :(得分:5)

如果该字段表示为const

public const int Foo = 100;

然后您将需要重建所有客户端应用程序,因为该值将被烘焙到这些客户端。

如果它只是一个公共静态只读字段:

public static readonly int Foo = 100;

...那么您将不需要重建客户端。该值将在执行时从程序集中获取。 (当然,客户端需要执行使用新程序集,因此您需要考虑版本控制等。)

答案 2 :(得分:0)

如果该字段未标记为常量,则不应要求重新编译客户端,因为每次访问该字段时都将返回该值。

如果它被标记为常量,那么客户端将需要重新编译,因为该字段的值在编译时被“烘焙”。