1

いくつかのメソッドを持つ.dllファイルを作成しました。そして、クラスライブラリとクライアントアプリケーションを使用して相互に参照し、正常に動作する別のプロジェクトがあります。

問題は、クラスライブラリで作成したばかりの.dllを参照しているのに、.dllで使用できるメソッドを使用できないことです。(オブジェクトブラウザでそれらを見ることができ、すべてが正常に見えます)。

私が試してみるときのように:

Cache cache = new Cache("blabla");

私は得る:

私が作成した参照。Cache'は名前空間ですが、'タイプ'のように使用されます。

しかし、クライアントアプリケーション(コンソールアプリ)に参照を追加すると。そうすれば問題はなく、メソッドを簡単に使用できます。クラスライブラリで問題が発生するのはなぜですか?

助言がありますか

4

3 に答える 3

2

Cacheクラスライブラリ内の名前空間として解釈されない限り、これには理由がありません。インスタンス化するときに、クラスを完全に修飾します。

var cache = new SomeNamespace.Cache();

または、クラスのエイリアスを使用します。

using MyCache = SomeNamespace.Cache;
...
var cache = new MyCache();
于 2012-07-02T12:27:01.107 に答える
2

これは、スコープ内にあり、その中の単語を特徴とする名前空間との名前の競合でありCache、おそらく最後にあります(のようなものnamespace MyCompany.MyNamespace.Cache { })。

タイプをインラインで完全に修飾するか、名前空間を解いusingて上部のステートメントを使用する必要があります。

MyNamespace.Cache cache = new MyNamespace.Cache("");

この状況を回避するには、名前空間の命名ガイドラインに従うようにしてください。

名前空間とクラスに同じ名前を使用しないでください。たとえば、Debug名前空間とDebugクラスの両方を提供しないでください。

于 2012-07-02T12:27:24.783 に答える
0

タイプを完全に修飾してみてください。 MyDllAssembly.Cache cache = new MyDllAssembly.Cache();

于 2012-07-02T12:27:56.893 に答える