2016-10-06 2 views
0

、場合組立、(アセンブリB参照アセンブリAを想定)アセンブリBからアセンブリAのグローバルネームスペースのパブリック静的クラスにアクセスする方法がありますBは同じ名前のグローバル名前空間にpublic static classを持っています?アセンブリAでBar.cs例えば:リファレンス別のアセンブリのグローバルネームスペース内のパブリック静的クラスは、C#で

私は、アセンブリBに Bar.csでこれを使用することができますどのように
using System.Diagnostics; 
// NOTE: No namespace declared here - this is in the global:: ns 
public static class Bar 
{ 
    public static void DoSomethingSilly() 
    { 
     Debug.WriteLine("I'm silly!"); 
    } 
} 

public static class Bar 
{ 
    public static void DoSomethingSilly() 
    { 
     // call Bar.DoSomethingSilly() from assembly A here 
    } 
} 

私は(それだけでバックアセンブリBへの参照、私を取得します)アセンブリBに動作しない、global::Bar.DoSomethingSilly()のようなものを試してみました。

私はそれを得るためにリフレクションを使うこともできますが(Assembly.GetType()のようなものですが)、ネイティブなC#の構文があるのだろうかと思っています。名前空間は、問題が発生することはありませんでした追加することが、あります場合、私は好奇心が強い - 最後に、私は私が所有し、それは別のツールによって生成されたため、グローバル名前空間でのみだったこれは、アセンブリAにコードの周りに名前空間を追加しましたこの種の参照を可能にする構文。この方向のため@ジョンスキートに

+2

それは、アセンブリB.余分な構文は必要ありませんで、絶対に問題ないはずです。実際にそれを行うことで二重チェックを行いますが、何も問題はありません。 –

+0

ああ、私は特定のしわを言及するのを忘れてしまった...アセンブリBは、同じ名前を持つ別の静的なクラスがあります。私は質問を更新します。 –

+2

また、グローバルな名前空間で?その場合は、[はexternエイリアス](https://msdn.microsoft.com/en-us/library/ms173212.aspx?f=255&MSPPError=-2147217396は)あなたが後にしているものです。 –

答えて

0

おかげで - のexternエイリアスこの作業を行うことができるものです。アセンブリへの参照のための特性に、(例えばassemblyAため、またはhereFooVersion1から採取されたスクリーンショットで)別名を追加:

property window example

、との.csファイルの追加の先頭に:

その後、いずれかのことができます
extern alias assemblyA; 

assemblyA::Foo.DoSomethingSilly(); 
assemblyA.Foo.DoSomethingSilly(); 

私はまだアドインのために行ってきましたg生成されたコードへの名前空間 - これはより簡単で、グローバル名前空間を汚染するのを防ぎます。

関連する問題