16

同じ名前空間と型名を持つ 2 つの外部アセンブリを参照すると、ありそうもないシナリオに遭遇しました。型を使用しようとすると、使用する型を解決できないというエラーがコンパイラによってスローされます。

C# では、参照にエイリアスを使用するメカニズムが提供されているようです。これらのエイリアスは、Visual Studio 2008 の参照ウィンドウから指定することもできますProperty。コードでこのエイリアスを使用するにはどうすればよいですか? 私が理解しているように、::演算子を使用する必要がありますが、次のエラーで失敗します。

CS0432 - Alias not found

通常の.オペレーターも同様に失敗します。

出力ウィンドウで、コンパイラがコマンド ラインで正しく渡されたエイリアスを取得していることがわかります。

私が次に試すことができるかもしれないことについての指針は大歓迎です.

4

4 に答える 4

17
extern alias alias1;
using alias1::Namespace;
于 2009-03-06T14:55:23.703 に答える
4

これを試して:

extern alias asm1;
extern alias asm2;

namespace Client
{
    class Program
    {
        static void Main(string[] args)
        {
            asm1.MyNs.MyClass mc1 = null;
            asm2.MyNs.MyClass mc2 = null;
        }
    }
}

assembly1 とassembly2global,asm1のプロジェクト参照に追加します。global,asm2

于 2009-03-06T14:56:04.327 に答える
3

extern aliasを使用する必要があると思います 。Anson Hortonは、この問題とextern エイリアスを使用して修正する方法についての優れたブログを公開しています。

于 2009-03-06T14:56:37.337 に答える
-1

プロジェクトでアセンブリを参照すると、デフォルトのエイリアス「global」があります。そのアセンブリに別のエイリアス (例: "global, AssemblyA") を追加すると、次のように参照されます。

using SomeTypeAlias = AssemblyA::Company.Product.SomeType;

また:

void SomeMethod(AssemblyA::Company.Product.SomeType someType) { ... }
于 2009-03-06T14:59:47.127 に答える