2012-06-21 10 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 
    } 
} 

静的なConstantsクラスに2番目のアセンブリからアクセスする方法がわかりません。また、循環依存関係が発生するため、最初のアセンブリへの参照を追加することはできません(2番目のプロジェクトアセンブリは最初のプロジェクトアセンブリで使用されるWPFコントロールです)。

私も可能なことをしようとしていますか?現在、私の回避策はコンストラクタで必要な定数をすべて渡していますが、私はむしろそれらに直接アクセスしたいと思います。

+4

循環参照を解決する必要があります。定数クラスを、他の両方のアセンブリが参照できる3番目のアセンブリに移動する可能性があります。 – Blorgbeard

+0

ポイントの横に:定数が必要な場合は、それを定数 'public const int MY_CONSTANT = 123456;'として宣言してください。 – Hinek

答えて

2

すべての静的定数をプロジェクト1からプロジェクト2に移動することができます。したがって、すべての定数はプロジェクト1とプロジェクト2の両方に表示されます。 他のすべてのプロジェクトで共有されているすべてのものを管理するのに役立つ別のプロジェクトを紹介することをお勧めします。それは共通インフラストラクチャプロジェクトです。

+0

私は答えとして3番目のアセンブリを導入することを承諾します。何らかの理由で私は同じ名前空間にいる限り、私は参照が必要ないと考えました。 – 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.プロジェクトへの参照を必要としなければなりませんコンパイルします。

編集:

申し訳ありませんが、あなたはすでにこれを考慮しています。はい、誰かが、第3のアセンブリを導入することによって循環依存関係の問題を回避するとコメントしました。

+0

「プロジェクト1」と「プロジェクト2」の違いは単なる指向性です。彼が "AutoManufacturers"や "CarDealerships"のような名前を与えていたとすれば、私はもっと明示的にできるはずだった。インテントを暗示するために一般的に無指向性の名前を混同しないでください。例えば、あるプロジェクトを別のプロジェクトから参照しているリンクされた質問など、この例に固有の意図を探してください。 – jcolebrand

+0

申し訳ありませんが、私はStackOverflowで尋ねた最初の質問です。パースを簡単にするために、コードを可能な限り一般的なものに保つよう努めていました。私はあまりにもそれをカットしたように見える。 – Eternal21

+0

今後NDAに違反することなく、明示的に明示することができます。 – jcolebrand

関連する問題