Visualizzazione post con etichetta Visual Studio 2008. Mostra tutti i post
Visualizzazione post con etichetta Visual Studio 2008. Mostra tutti i post

07 aprile 2009

Nuovo blog tecnico

Vi segnalo che ho aperto un nuovo blog completamente dedicato al mondo dell’informatica, mia passione seconda solo alla fotografia.

Il link del blog è http://codetailor.blogspot.com.

28 marzo 2009

VB.NET : Copiare automaticamente le proprietà di un oggetto in un altro grazie alla Reflection

L’extension method che voglio postare questa volta consente di copiare le proprietà (almeno in lettura) di un oggetto sorgente, nelle proprietà (dello stesso tipo, con lo stesso nome e, almeno, in scrittura) di un altro oggetto:

<Extension()> _
Public Sub CopyFrom(ByVal destObj As Object, _
                   
ByVal sourceObj As Object)
    Dim sourceType = sourceObj.GetType()
    Dim destType = destObj.GetType()
    Dim sourceProperties = (From p In sourceType.GetProperties() _
                            Where p.CanRead _
                            Select p).ToList()
    For Each sourceProp In sourceProperties
        Dim propName = sourceProp.Name
        Dim destProp = destType.GetProperty(propName)
        If destProp IsNot Nothing AndAlso destProp.CanWrite Then
            If sourceProp.GetType().Equals(destProp.GetType()) Then
                Dim propValue = sourceProp.GetValue(sourceObj, Nothing)
                Try
                    destProp.SetValue(destObj, propValue, Nothing)
                Catch ex As Exception
               
End Try
            End If
        End If
    Next
End Sub

Utilizzando questo moetodo possiamo scrivere:

.
.
Dim destObj as Object
destObj.CopyFrom(sourceObj)
.
.

in modo da copiare tutte le proprietà di sourceObj nelle proprietà comuni di destObj.

28 gennaio 2009

Pubblicato un articolo su ioProgrammo di febbraio

Sul numero 135 di ioProgrammo è presente un mio articolo sul linguaggio Buddy Script.

09 gennaio 2009

Due articoli su ioProgrammo di Gennaio

Scrvo questo post solo per segnalare l’uscita di due miei articoli ioProgrammo-134 nel numero 134 di ioProgrammo in edicola a Gennaio:

  • Progettare un bot per Live Messenger
  • RSS una lingua franca anche per i database

 

 

 

29 ottobre 2008

.NET : Controlli gratuiti da DevExpress

Girando tra i vari blog, mi sono imbattuto nella possibilità di scaricare dei controlli gratuiti della DevExpress per sviluppatori .NET Framework.

Se siete interessati fatevi un giro su questo sito.

28 settembre 2008

VB.NET : Un extension method per ridimensionare una bitmap

Questo semplice extension method consente, a partire da un oggetto bitmap, di ottenere un nuova bitmap uguale a quella di partenza ma ridimensionata in base ad un fattore di larghezza e a uno di altezza:


<Extension()> _
Public Function CloneResize(ByVal image As Bitmap, ByVal zoomFactorWidth As Double, ByVal zoomFactorHeight As Double) As Bitmap
Dim width = image.Width
Dim height = image.Height
Dim newImage = New Bitmap(image, width * zoomFactorWidth, height * zoomFactorHeight)
Return newImage
End Function




Grazie a questo metodo possiamo, ad esempio ottenere, a partire dall’icona di sistema che indica il warning, una bitmap di dimensioni raddoppiate:



Drawing.SystemIcons.Warning.ToBitmap().CloneResize(2, 2)


image



20 settembre 2008

Articoli : Windows Live Messenger su ioProgrammo

Save a tutti,

è uscito, sul numero di ottobre di ioProgrammo, il mio articolo riguardante  Windows live Messenger.

 ioProgrammo numero 131

Si tratta del mio primo articolo su questa testata......speriamo bene!!!

 

30 aprile 2008

VB.NET: Convertire un oggetto IQueryable in una DataTable

L'extension method che vi propongo oggi converte un oggetto che implementa l'interfaccia IQueryable in una DataTable.

L'argomento fieldNames è una stringa nella forma:

proprieta1[?];proprieta2[?];.....;properietaN[?]

dove:


proprieta : è il nome di una proprietà dell'oggetto contenuto nell'argomento "IQueryable" che diventerà una colonna della DataTable risultato;

? : è facoltativo ed indica che la colonna può contenere valori nullable.


La proprietà può essere anche una sottoproprietà dell'oggetto.


L'extension method fa uso della funzione statica esposta nel post VB.NET : Recuperare il valore o il tipo di una proprietà in maniera ricorsiva tramite reflection.


<Extension()> _
Public Function ToDataTable(ByVal queryableObj As IQueryable, _
ByVal fieldNames As String) As DataTable
Dim retTable As New DataTable
' recupero il tipo di oggetto di cui è formata l'interfaccia
Dim objType = queryableObj.ElementType
Dim fields = fieldNames.Split(";")
' creo le colonne
For Each field In fields
If Not String.IsNullOrEmpty(field) Then
Try
Dim
propName = field.Replace("?", "")
Dim colType = ReflectionUtility.GetPropertyType(objType, propName)
Dim colName = propName.Replace(".", "_")
Dim col As New DataColumn With {.ColumnName = colName, _
.DataType = colType, _
.AllowDBNull = field.EndsWith("?")}
retTable.Columns.Add(col)
Catch ex As Exception
End Try
End If
Next
' riempio le colonne
For Each currObj In queryableObj
Dim row = retTable.NewRow
For Each field In fields
Dim propName = field.Replace("?", "")
Dim colName = propName.Replace(".", "_")
If retTable.Columns.Contains(colName) Then
row(colName) = ToBDNullableValue(ReflectionUtility.GetPropertyValue(currObj, field))
End If
Next
retTable.Rows.Add(row)
Next
Return
retTable
End Function

Public Function
ToBDNullableValue(ByVal obj As Object) As Object
Dim
retObj As Object = DBNull.Value
If obj IsNot Nothing Then
retObj = obj
End If
Return
retObj
End Function

Per chiarire la situazione facciamo un'esempio, supponiamo di avere il seguente pezzo di codice:



Dim dipendenti As Dipendente() = _
{New Dipendente With {.Cognome = "Bianchi", _
.Nome = "Carlo", _
.DataNascita = New DateTime(1970, 2, 26)}, _
New Dipendente With {.Cognome = "Verdi", _
.Nome = "Giuseppe", _
.DataNascita = New DateTime(1978, 1, 1)}, _
New Dipendente With {.Cognome = "Rossi", _
.Nome = "Bruno", _
.DataNascita = New DateTime(1980, 1, 1)}, _
New Dipendente With {.Cognome = "Bonaventura", _
.Nome = "Alessandro", _
.DataNascita = New DateTime(1960, 1, 1)}}

Dim persTable = dipendenti.AsQueryable().ToDataTable("Cognome;Nome;DataNascita.Year")


La tabella persTable conterrà:


image


L'esempio mostra come l'extension method possa essere utilizzato anche con normali array grazie all'extension method AsQueryable() presente nel framework .NET 3.5.



I nomi delle colonne della DataTable sono uguali ai nomi delle proprietà passate per argomento con il '.' sostituito con '_'.



 



29 aprile 2008

VB.NET: Snippet per creare automaticamente le proprietà in Visual Studio

Una delle nuove caratteristiche di C# 3.5 è la possibilità di definire le proprietà senza dover scrivere il codice di set e get e definire l'attributo privato che, dietro le quinte, contiene il valore.

Putroppo VB non prevede questa sintassi e, così ho realizzato un semplice snippet per automatizzare l'iter noioso della creazione delle proprietà.

Lo snippet crea il seguente codice:

Private_AttributeName As AttributeType
Public PropertyAttributeName() AsAttributeType
    Get
        Return Me
._AttributeName
    End Get
    Set
(ByValvalue AsAttributeType)
        Me._AttributeName = value
    End Set
End Property

 

dove AttributeName è il segnaposto per il nome dell'attributo e AttributeType il segnaposto per il tipo dell'attributo (e, quindi, della proprietà).

Lo snippet è scaricabile dal mio spazio su SkyDrive.

 

24 aprile 2008

MIX Essentials 08: il giorno dopo

Ieri ho dormito poco, ho preso due aerei entrambi in ritardo (uno dei quali quasi dirottato a Malpensa per la nebbia) e oggi sono attivo e sveglio come lo zerbino di casa!

Ma ne è valsa la pena!!

Pur non essendo uno sviluppatore prettamente web, la giornata è stata ricca di spunti e "ganci" per approfondire.

Innanzitutto grande Steve Ballmer, carismatico, verace e sicuramente una figura imponente (e non solo dal punto di vista fisico).

In un ora ci ha descritto cosa intende per web 2.0 e come vede il futuro del web nei prossimi anni e, a dargli retta, di lavoro ce ne sarà.

Bisognerà solo imboccare la giusta strada e crederci.

La mattina di fatto ci ha proposto dei case study (interessanti ma non come papà Steve) mentre il pomeriggio ha visto Silverlight 2.0, Windows Live e Silverlight per Mobile.

Decisamente interessante la sessione su Silverlight 2.0 con tanto codice scritto e consolidamento di quanto già c'è.

Piena di prosettive la seconda sessione su Windows Live che ci ha fornito spunti per integrare nuovi servizi nelle nostre applicazioni (anche qui tanto codice)

La terza sessione, invece, è stata da "sguardo da mucca che vede passare il treno", Tutti incollati allo schermo, meravigliati (o, almeno, io ero meravigliato) da Silverlight per Mobile (che ricordiamo appena sfornata) con effetti e vettorialità su un normale smartphone.

E siamo solo all'inizio!!!

11 aprile 2008

Su Computer Programming il reportage dell'evento Microsoft {Heroes}

E' uscito sul numero 177 di Computer Programming il mio articolo/reportage sull'evento Microsoft di lancio dei prodotti 2008 (Visual Studio, SQL Server e Windows Server):

 

Cover