0

私はこれに対する答えを知っていると思っていましたが、コンパイル エラーが別のことを教えてくれています。同じ語幹ネームスペースを含む 2 つの別個のライブラリを作成しました。例えば:

MyLib1.dll 

含む

Common.MyFuncs.DoSomeStuff

MyLib2.dll

含む

Common.MyFuncs.DoOtherStuff

MyLib2.dll は myLib1.dll を参照します

プロジェクトに両方への参照を含めると、MyLib1.dll が MyLib2.dll をマスクします。私の質問は単純です、これは正しいですか-つまり、これは.netが行うことですか? 競合する名前空間に extern を使用できることは知っていますが、以前にアセンブリ間で共有されている名前空間を見たことがあると確信しています (実際、以前に行ったことがあると確信しています)。私が正しいか間違っているかを示すものをオンラインで見つけてください。

4

1 に答える 1

1

名前空間は互いに "マスク" しません。同じ名前空間が複数のアセンブリで問題なく共存できます (実際、複数のアセンブリに存在する System.* 名前空間がいくつかあります)。各アセンブリで同じ型が定義されていないことを確信していますか(コードを移動したのに、元のコードを削除していない可能性がありますか?)。そうすれば、型間で衝突が発生しません。

両方のプロジェクトを参照する場合でもusing Common.MyFuncs.[whatever];、各コード ファイルの先頭に、そこから型を使用する必要があるステートメントを含める必要があります。

于 2013-11-05T10:11:28.830 に答える