在两个命名空间中使用相同的类名-优先考虑其中一个

本文关键字:一个 命名空间 两个 | 更新日期: 2023-09-27 18:18:21

在不同的命名空间中有两个同名的类

其中一个是.aspx页面,另一个是业务类,它代表我的数据库中的一个条目(我使用CSLA)。

我在aspx页面的命名空间中工作,通常我永远不需要调用页面类,但经常需要调用业务类。

我已经在寻找解决办法了。我发现的是在我的页面类的命名空间块中编写一个具有更高优先级的using部分。这里的问题是,我正在写的名称空间仍然具有最高优先级,页面类是这个名称空间。

是否有一种方法可以优先考虑另一个名称空间,然后我目前正在编写的名称空间?

在两个命名空间中使用相同的类名-优先考虑其中一个

是否有一种方法可以优先考虑另一个名称空间,然后我目前正在编写的名称空间?

不直接。如果存在冲突,我不希望编译器"选择"一个命名空间,我希望它让我修复冲突,这就是它所做的。

我要么显式地声明另一个名称空间以避免冲突,要么使用别名。

当从ViewModels映射到Domain对象时,我经常看到这种情况:

namespace Domain
{
    public class User
    {
    }
}
namespace ViewModel
{
    public class User
    {
        // another class with different properties
    }
}

控制器:

using Domain;
using ViewModel;
public class UserController
{
    public Save(Model.User user)   
    {
        Domain.User dUser = Mapper.Map(user);
        repository.Save(dUser);
    }
}

using DUser = Domain.User;
using VMUser = ViewModel.User;
public class UserController
{
    public Save(VMUser user)   
    {
        DUser dUser = Mapper.Map(user);
        repository.Save(dUser);
    }
}

是的,使用这个:

using newClassName = System.Text;