我在名称空间Inventory_Software.BL
中有一个名为 BL 的类,我希望在Inventory_Software.PL.Item_Master
类中访问此类,但尽管使用了语法
在该类的命名空间名称前using Inventory_Software.BL
,我收到错误:
'Inventory_Software.BL' is a 'namespace' but is used like a 'type'
每当我尝试使用语法
初始化 BL 类时BL businesslayer = new BL();
有人可以告诉我为什么吗?
答案 0 :(得分:5)
当你开始给一个与命名空间同名的类时,你基本上处于一个痛苦的世界。只是不要这样做 - 重命名你的类或命名空间。
你可能可以使用合适的使用指令来解决它,但它真的值得那么痛苦吗? (我个人不会使用“BL”作为命名空间或类的名称,也不会在名称中使用下划线;但这是另一回事。)
Eric Lippert有关于此的series of four blog帖子 - “不要将类命名为与其命名空间相同”:
答案 1 :(得分:0)
自Inventory_Software.BL以来,您已在命名空间内初始化了命名空间,而是执行此操作:
Inventory_Software.BL businessLayer = new Inventory_Software.Bl();
答案 2 :(得分:0)
编译器无法区分您是引用命名空间还是键入命名空间。将名称空间更改为 BL ,或将类的名称更改为 BL 以外的名称。也许称之为 BusinessLayer 而不是......
答案 3 :(得分:0)
您是否检查过您是否有一个名为namespace
的{{1}}和一个名为BL
的班级。如果是这样,您将需要使用对类的完整引用或更改类/命名空间的名称。
答案 4 :(得分:0)
您正在尝试创建BL的对象。但BL不是一个班级。它只是一个命名空间。
您可以通过指定类的名称来创建类的对象。在你的代码中,你必须有一些东西
公共类NameofYourClass
{
//你的方法
}
因此,在这种情况下,您将能够编写
NameofYourClass yourObject = new NameofYourClass();
答案 5 :(得分:0)
看起来你有一个Inventory_Software.BL.BL类,你正试图从Inventory_Software.PL.Item_Master的范围访问它。
正如预期的那样,一个不合格的名称BL会解析为'Inventory_Software.BL'而不是'Inventory_Software.BL.BL'。
您可以通过添加以下任一使用
来取消使用Inventory_Software.BL; 或者干脆 使用BL;