Я сделал что-то похожее с render :json
. Это - то, что работало на меня:
respond_to do |format|
format.html # index.html.erb
format.json { render :json => @things.to_json(:include => { :photos => { :only => [:id, :url] } }) }
end
Причина в том, что CType
и DirectCast
принципиально разные операции.
DirectCast
- это механизм приведения типов в VB.Net что позволяет выполнять только преобразования, определенные CLR. Он даже более строг, чем версия C # приведения типов, поскольку не учитывает пользовательские преобразования.
CType
- это механизм лексического приведения. Он учитывает правила CLR, определенные пользователем преобразования и преобразования, определенные VB.Net. Короче говоря, он будет делать все возможное, чтобы создать допустимое преобразование объекта в указанный тип.
В этом конкретном случае вы пытаетесь преобразовать значение в Enum, для которого нет преобразования, определенного в CLR, и, следовательно, это не удается. Однако среда выполнения VB.Net смогла найти лексическое преобразование для решения этой проблемы.
Приличное обсуждение различий существует здесь: