3

私は名前空間を持っています:

MyProject.Core.Db
MyProject.Core.Model

そして、私はクラスを持っています:

MyProject.Core.Db.User
MyProject.Core.Model.User

次のようなことは可能ですか:

using MyProject.Core;

namespace MyProject.BLL
{
    public class Logic
    {
        public static void DoSomething()
        {
            var userEntity = new Db.User();
            var userModel = new Model.User();
        }
    }
}

クラス名 (UserModel、UserEntity) にサフィックスを使用しないようにしたいだけです。

C#でどうにかすることは可能ですか?

4

5 に答える 5

4

あなたが達成しようとしていることは不可能です。最も近いものは、次のような using エイリアス ディレクティブです。

using User = Myproject.Core.Db.User;

これにより、 Myproject.Core.Db.Userのパスを完全に修飾する必要がなくなります。ただし、少なくとも 1 つのクラスの完全修飾パスを指定する必要があります。Servy が示したように、他のタイプの別のエイリアスを作成することもできますが、この時点では、クラスの名前を変更するだけです。

ここでの本当の解決策は、クラスによりわかりやすい識別子を与えることだと思います。

于 2013-07-03T13:32:38.287 に答える
2

C# は相対名前空間参照をサポートしています。

あなたの場合、つまり、名前空間MyProject.Coreにいる場合、クラスをDb.Userおよびとして参照できますModel.User。ただし、名前空間にいる場合は、プレフィックス (および)MyProject.BLLを含める必要があります。CoreCore.Db.UserCore.Model.User

それが十分ではなく、名前空間構造を変更したくない場合はusing、問題の型を使用するすべてのファイルに s を追加することをお勧めします。

using DbUser = MyProject.Core.Db.User;
using ModelUser = MyProject.Core.Model.User;
于 2013-07-03T14:13:49.863 に答える