C#でnamespace(名前空間)にエイリアス(別名)を付けることで名前の衝突を避ける。

コンピュータ

OpenCVSharpを使っていて、RectやPointなどのクラスの名前がWPFなどの既存のクラス名と被ることがあります。
namespaceのエイリアスを定義することで回避出来るとのことですので調べてみました。

基本的な書き方

using System;
using threading = System.Threading; // 名前空間にエイリアス
using MyTimer = System.Timers.Timer; // 特定のクラスにエイリアス

class Program
{
    static void Main()
    {
        // エイリアスを使ってインスタンス化
        MyTimer timer = new MyTimer(1000);
        
        // 名前空間のエイリアス経由でアクセス
        threading.Thread.Sleep(500);
    }
}

特定のクラスのエイリアスは、よく使う特定のクラスを定義すると良さそうです。

例えばOpenCVSharpのPointやRectなどをCvPointやCvRectなどの名前にすることが考えられます。

名前空間ごと別名を付けて、呼び出しは、「別名.クラス名」といった感じに記述しています。

何のライブラリ(名前空間)の機能を使っているのか明示的になるので、記述量は若干増えますが、トラブルは減りそうです。

コメント