Этот конкретный вопрос больше связан с попыткой увидеть причину сообщения компилятора, чем с решением проблемы, но я надеюсь, что все в порядке.
Допустим, у нас есть:
class Foo {
public static explicit operator Foo(Bar bar) {
return new Foo();
}
}
РеализацияBar
не важно.Теперь, когда вы пытаетесь сделать следующее, возникает исключение:
object obj = new Bar();
Foo foo = (Foo)obj;
Это дает InvalidCastException
, и это правильно, потому что у нас нет оператора приведения типа object
.Но сообщение об исключении:
System.InvalidCastException: Невозможно привести объект типа 'Bar' к типу 'Foo'
. может привести объект типа Bar
к типу Foo
.Я ожидаю, что компилятор скажет мне, что я в основном пытаюсь привести объект типа System.Object
, а не Bar
.Является ли мое понимание ошибочным, и если да, то в чем причина этого поведения?
Заранее спасибо
РЕДАКТИРОВАТЬ: Просто чтобы быть ясно, я знаю , как решить проблемуи это Foo foo = (Foo)(Bar)bar
сделает свое дело.Меня больше интересует само сообщение об ошибке.