是一个'字段',但像'类型'一样使用(它实际上是一种类型)

Nur*_*mir 0 .net c# visual-studio

我得到expectExceptionType是一个'字段',但用作if(异常是expectedExceptionType)的'type'错误.但是你可以看到它一个类型.这里有什么问题?

我使用Visual Studio 2013与.NET 4.5

public sealed class ExpectedInnerException : ExpectedExceptionBaseAttribute 
{
    private Type expectedExceptionType;
    private string expectedExceptionMessage;

    public ExpectedInnerException(Type expectedExceptionType, string expectedExceptionMessage)
    {
        this.expectedExceptionType = expectedExceptionType;
        this.expectedExceptionMessage = expectedExceptionMessage;
    }

    protected override void Verify(Exception exception)
    {
        if (exception is expectedExceptionType)
        {

        }
        //Some other code
    }
}
Run Code Online (Sandbox Code Playgroud)

Him*_*ere 5

expectedExceptionType是类型的实例,Type本身不是编译时类型.因此写下这个:

protected override void Verify(Exception exception)
{
    if (exception.GetType() == expectedExceptionType)
    {

    }
    //Some other code
}
Run Code Online (Sandbox Code Playgroud)

编辑:如果你的类型是一个子类,expectedExceptionType你可以检查IsAssignableFrom:

if (exception.GetType().IsAssignableFrom(expectedExceptionType.GetType()))
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,如果exception是expectedExceptionType的子类,则它将返回false.那是我想用"是"的方式 (2认同)