【发布时间】:2010-10-07 17:01:05
【问题描述】:
我需要帮助在 c# 中初始化静态只读变量。我有一堂有这个签名的课
public class AgentDescriptions
{
public static readonly int P1;
public static readonly int P2;
static AgentDescriptions()
{
int agencyID = 1; //I need to pass this in the constructor somehow
P1 = GetIDFromDB(agencyID);
P2 = GetIdFromDB(agencyID);
}
}
P1 和 P2 在应用程序中反复使用,并且 我试图避免两件事。 1)魔术数字和 2)每次我需要使用 P1 和 P2 时都去数据库。
在应用程序中,我在很多地方都以这种方式使用它们
if (something == AgentDescriptions.P1)
//Blah();
请帮忙。如何在静态构造函数中传递代理 ID?如果我添加另一个构造函数并在那里传递代理ID,我每次使用它时都必须初始化该类吗?这意味着每次都要去数据库吗?
【问题讨论】:
-
你不能传递静态构造函数参数。请参阅 MSDN:msdn.microsoft.com/en-us/library/k9x6w0hc(v=VS.90).aspx
-
大量代码气味,我真的怀疑你需要这样做,我从来没有这样的需要
-
agencyID 是从哪里来的?
-
您可以在调用项目时将参数传递给 public static void Main()。在 Main 方法中初始化 P1 和 P2。