0

重複の可能性:
C# で extern エイリアス キーワードを使用する必要があるのはいつですか?

ソリューション内の他のプロジェクトから共有されているファイルで主に構成されているアセンブリがあります。つまり、ソリューション全体は約 10 MB になりますが、その機能の小さなサブセットを別の 200 KB アセンブリにエクスポートします。ソリューション内のすべてのプロジェクトは、UI を除いて NUnit テスト プロジェクトにあります。

問題は、共有ファイルの 1 つにテストを追加しようとしたところ、次のエラーが発生したことです。

The type 'xxx' exists in both 'c:\path\to\project\Logic.dll'
and 'c:\path\to\project\Exported.dll'.

リフレクションを使用してアセンブリ修飾名を指定したり、エクスポートされたアセンブリ テストを別のプロジェクトに削除したりできることはわかっていますが、どちらも面倒です。コンパイル時に Logic.dll で xxx のバージョンを使用するように指定したいだけです。コンパイル時に使用する Type のバージョンを指定することは可能ですか?次のようになります。

xxx blah = new xxx();
blah.DoSomething(123);

それ以外の:

Type t = Type.GetType("Logic.xxx, Logic");
object blah = Activator.CreateInstance(t);
t.GetMethod("DoSomething").Invoke(blah, new object[] { 123 });
4

2 に答える 2

0

必要なオブジェクトクラスが配置されている名前空間に基づいて参照を指定できる必要があります。これに沿った何か:

LogicNamespace.XXX blah = new LogicNamespace.XXX();

于 2012-12-06T22:30:33.153 に答える
0

Hans Passant のコメントは正しい答えです。「extern エイリアス」は私が探していたものであり、「C# で extern エイリアス キーワードを使用する必要があるのはいつですか? 」の答えです。それを使用する方法への良い指針を与えます。

于 2012-12-06T23:00:34.350 に答える