2012-06-21 31 views
5

我正在使用C#中的WPF應用程序。我公司擁有一批在靜態類定義爲以下常量:如何訪問同一個命名空間中的靜態類,但另一個程序集?

PROJECT1:

namespace MyCompany 
{ 
    public static class Constants 
    { 
     public static int MY_CONSTANT = 123456; 
    } 
} 

然後,所有我需要做的訪問我不變的任何地方內項目1:

int x = Constants.MY_CONSTANT; 

現在我添加另一個項目到相同的解決方案,並使用相同的根名稱空間:

項目2

namespace MyCompany.MyControl 
{ 
    class VideoControl 
    { 
     int x; 
     x = Constants.MY_CONSTANT; //<-- doesn't work 
     x = MyCompany.Constants.MY_CONSTANT; //<-- doesn't work either 
    } 
} 

我只是不知道從第二個程序集中訪問我的靜態常量類的方法。我也不能添加對第一個程序集的引用,因爲它會導致循環依賴(第二個項目程序集是第一個項目程序集使用的WPF控件)。

我試圖做甚至可能嗎?目前我的解決方法是在構造函數中傳遞所有必需的常量,但我寧願直接訪問它們。

+4

你需要一個引用 - 你需要解決你的循環依賴 - 可能將常量類移出到第三個程序集中,這兩個程序集都可以引用。 – Blorgbeard

+0

旁邊的點:如果你想要一個常量,爲什麼不把它聲明爲一個常量'公共const int MY_CONSTANT = 123456;'? – Hinek

回答

2

您可以將項目1中的所有靜態常量移至項目2,因此,項目1和項目2都可以看到所有常量; 我建議引入另一個項目(也許是普通項目),它可以幫助管理所有其他項目共享的所有內容。這是一個普通的基礎設施項目。

+0

我會接受介紹第三次大會作爲答案。出於某種原因,我認爲只要我在相同的命名空間,我不需要引用。 – Eternal21

0

你必須在項目1中添加一個引用到項目2,那麼它應該工作得很好。你需要一個圖形來說明如何?

這裏是一個MSDN鏈接http://msdn.microsoft.com/en-us/library/wkze6zky.aspx

,這裏是一個SO與圖片回答>Adding projects to a project in Visual Studio 2010

+0

項目1是項目2中使用WPF控件的WPF項目,所以我很確定它已經參考了它。不幸的是,我的代碼正在工作,所以我將無法複覈,直到明天。那麼會回覆你。 – Eternal21

+0

當我們無法檢查時,要求我們幫助你弄清楚它有點奇怪;-) – jcolebrand

+0

我從內存中工作,因爲問題一直困擾着我在家裏。剛剛檢查過,是的項目1確實對項目2有參考意義。 – Eternal21

0

對方回答是接近的,但它實際上是相反的:項目2需要一個參考項目1.代碼應該然後編譯。

編輯:

對不起,我看你已經考慮過這個。是的,有人評論說,通過引入第三個程序集來避免循環依賴問題。

+0

對我來說,「項目1」和「項目2」之間的區別僅僅是方向性的。如果他給出了名字,比如「汽車製造商」和「汽車經銷商」,我可能會更加明確。請不要混淆一般的非定向名稱以暗示意圖,而是尋找示例中固有的意圖,例如顯示引用另一個項目的鏈接問題。 – jcolebrand

+0

對不起,這是我在StackOverflow上詢問的第一個問題,我試圖儘量保持代碼的通用性,以便更容易解析。看起來最後我把它砍得太厲害了。 – Eternal21

+0

在未違反NDA的情況下,請隨時高度明確。 – jcolebrand

相關問題