Sempre per la serie "la pigrizia nello schiacciare i tasti è tanta" ho "investito" 3 minuti per creare questa macro per VB (e C#, anche se lì i caratteri sono 2... ) che, selezionato il nome dell'oggetto, aggiunge il codice che scrive il DirectCast verso il tipo desiderato. Aggiungendo un bel pulsantino sulla barra degli strumenti il tutto sembra essere sufficientemente comodo.
Potrebbe sembrare totalmente inutile, ma forse centra il fatto che avendo scelto di settare Option Strict On su un vecchio progetto in VB.NET la task list si è accesa come un albero di natale...
Meno male che esiste: Opzioni -> Progetti -> Impostazioni predefinite di Visual Basic -> Option Strict: On (messaggio subliminare...)
Sub WriteDirectcast()
Dim typeName As String = String.Empty
Dim junk As String
Dim startpoint, endpoint As EditPoint
With DTE.ActiveDocument.Selection
startpoint = .TopPoint.CreateEditPoint()
endpoint = .BottomPoint.CreateEditPoint
End With
If startpoint.EqualTo(endpoint) Then
MsgBox("Select first the object name to cast", MsgBoxStyle.Critical)
Exit Sub
End If
typeName = InputBox("Cast to type:")
DTE.UndoContext.Open("Insert A DirectCast")
Try
'ELR: ADDED Test for Languages
If DTE.ActiveDocument.Language = "CSharp" Then
' C Sharp Code
startpoint.Insert(String.Format("(({0})", typeName, vbCrLf))
endpoint.Insert(String.Format(")", typeName))
Else
' VB Code
startpoint.Insert(String.Format("DirectCast("))
endpoint.Insert(String.Format(", {0})", typeName))
End If
Finally
DTE.UndoContext.Close()
End Try
End Sub