1. ホーム
  2. c#

[解決済み] 同じ名前空間の異なる2つのDLL

2023-08-11 18:44:51

質問

同じ名前空間を持つ 2 つの DLL ファイルがありますが、それぞれ異なるメソッドと型を持っています。 私のプロジェクトで両方の DLL を参照し、それらのメソッドと型を使用するにはどうしたらよいでしょうか。

ところで、この2つのDLLには、同じ名前でも実装が異なるメソッドや型があり、ユニークなメソッドや型もあります。

どのように解決するのですか?

特別なことは何もありません。ただ、それらを参照し、型を使用するだけです。名前空間は実際には不透明な型ではないので、問題なく複数のアセンブリにまたがることができます。名前空間は、それが含むすべての型に共通の接頭辞を追加する方法にすぎず、異なる名前空間の下で同じ名前の複数の型を持つことができます。(フレームワークはそれらを同じ名前を持っているとは見なしません。なぜなら、すべてのものの"完全修飾"名-それはエイリアスと名前空間をその前に付けている-を見るからです。)

稀なケースとして、同じ型名を持つ 2 つのアセンブリを参照することがあります。 を持つ2つのアセンブリを参照する場合(同じDLLの2つの異なるバージョンなど)、エイリアスを使用して、与えられた型に使用するアセンブリを区別することができます。全ての参照に対するデフォルトのエイリアスは global ですが、アセンブリを参照する際に(コンパイラ・スイッチを使用するか、または単に Visual Studio のプロパティ・ボックスを使用して)独自のエイリアスを指定することができます。 extern alias <name> 節を使用し、それを使用するコード ファイルの先頭に <name>::MyNamespace.Type