我正在尝试创建一个新的自定义异常。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace project1.Exception
{
public class ItemNotFoundException: Exception
{
}
}
在构建项目时,它会出错。
错误51'Solution1.project1.Exception'是'命名空间',但用作'类型'D:\ wORKsHOP \ Arte.Apax2 08.05.2015 \ project1 \ Attributes \ Logger.cs 71 80 Solution1.project1 < / p>
知道为什么会这样吗?我是否需要添加System.exception
?
答案 0 :(得分:3)
将namespace project1.Exception
重命名为namespace project1.MyCustomException
或其他类似内容。编译器在
Exception
public class ItemNotFoundException: Exception
指的是您的命名空间Exception
,而不是类。将命名空间重命名为Exception
以外的任何名称都将解决此问题。
答案 1 :(得分:1)
您正在使用的名称空间称为
namespace project1.Exception
在此命名空间中,您使用的是Exception的继承。这个问题是编译器认为你的
public class ItemNotFoundException: Exception
引用命名空间而不是Exception标准类。 要解决这个问题,只需写下
即可public class ItemNotFoundException: System.Exception
它应该可以正常工作。
答案 2 :(得分:0)
您通过调用命名空间position:absolute
来创建名称歧义。现在编译器确实认为命名空间命名比Exception
命名空间中名为Exception
的对象更重要。因此,它会警告您从命名空间而不是对象继承。如果要在此类命名空间中继承System.Exception,则需要完全限定继承的对象名称(包括其命名空间)以解决歧义。
System
当然,您也可以简单地将您的命名空间重命名为不包含namespace project1.Exception
{
public class ItemNotFoundException: System.Exception //Fullqualified reference to exception
{
}
}
,如前所述 - 那么您可以在没有完全限定名称的情况下生活。