「アクション」と呼ばれる型の名前解決に関する問題があります。プロジェクトが初期の状態で、同じプロジェクトですべてが宣言されている間、コンパイラは常に自分のクラスを優先していました。しかし、プロジェクトを別のアセンブリ(ProjectName.Common、ProjectName.Engineなど)に分ける必要が生じたため、System.ActionとProjectName.Common.Actionの間の名前の競合が発生しました。異なるアセンブリ内のシステム名前空間型とユーザー定義型の間の名前の競合
システムがまだIDEによって最初に作成されたグローバルスコープでインポートされている間に、プロジェクト内部名前空間をプロジェクトファイルの名前空間宣言の中に明示的にインポートできることが分かりました。実際にはこれは動作しますが、非常にエレガントに見えません。この問題を解決するためのより良いアプローチはありますか?
using System;
...
namespace ProjectName.Engine {
using ProjectName.Common;
class SomeClass {
private Action action;
...
}
}
はたぶん誰かがそれらのためのレシピを知っている:それは非常に一般的なドメイン名ではなく、すなわち数学など
コード例のような特別なものであるので、私のActionクラスの名前を変更すると、実際に受け入れ可能な解決策ではありませんため
using Example = ProjectName.Common;
class SomeClass {
private Example.Action action;
...
}
または代わりに、タイプの別名:あなたはnamespace aliasを使用することができます
タイプを「操作」に変更することができます。 – ChaosPandion
@ChaosPandion:残念ながら、それはまったく受け入れられないものでした(少なくとも私のために);-) –
あなたの答えはありがとうございました。それらのすべては全く同じように役立ちます。しかし、技術的な問題の多くは事前に私には比較的明確であったが、私は時には「最高の審美的」な解決策を探しているだけであると思う。 –