Select Case con tipi di oggetti

venerdì 20 febbraio 2009 - 16.22

Teech Profilo | Expert

Ho un metodo di una classe che mi restituisce degli oggetti di tipo Object.
Ovviamente, questi oggetti sono "specializzati" e potrebbero essere diverse cose. Stò cercando un modo per fare una Select Case sul tipo restituito ma non capisco proprio come fare. La struttura è più o meno la seguente (non so casa mettere al posto dei punti interrogativi).
Dim o As Object = MiaClasse.GetQualcosa Select Case ??? '<-- Tipo di o Case ??? '<-- Se tipo A 'Fa qualcosa Case ??? '<-- Se tipo B 'Fa qualcosa Case else 'Fa qualcosa End Select
Potete darmi lumi in merito? Grazie mille
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

rossimarko Profilo | Guru

Ciao,

come riportato nella documentazione (http://msdn.microsoft.com/en-us/library/cy37t14y.aspx) puoi usare solo degli "elementary data type".

Quindi la soluzione è quella di prendere la stringa che rappresenta il tipo

Dim obj As Object = New Button Select Case obj.GetType.ToString() Case "System.Windows.Forms.Button" MessageBox.Show("Bottone") Case Else MessageBox.Show("Altro") End Select
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

munissor Profilo | Senior Member

Io preferirei allo switch stringa sul tipo (che è soggetta a errori non verificabili compile-time) ad un if..else if..else sul tipo vero e prioprio:

object o;
if( o.GetType() ==typeof(Button) )
{
}
else if( GetType() ==typeof(..) )
{
}
else
{
}
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5