2 Lug, 2008
.net console application programmazione reflection
Come si può ottenere a runtime il numero di versione completo di un programma di tipo console? Nelle applicazioni Windows Forms useremmo semplicemente la proprietà Application.ProductVersion, ma in questo caso bisogna adottare un altro sistema: quale?
Dobbiamo usare la reflection. Per andare dritti al punto, ecco il codice d’esempio:
Imports System.Reflection;
[...]
Assembly aAssembly = Assembly.GetCallingAssembly()
AssemblyName anName = aAssembly.GetName()
Console.WriteLine(”{0}{1} {2:0}.{3:0}”, anName.Name, anName.Version.Major.ToString(), anName.Version.Minor.ToString())
In sostanza, come potete constatare, il numero di versione è memorizzato nella proprietà Version dell’istanza di AssemblyName associata all’assembly corrente. Buono a sapersi, non è vero?
27 Mag, 2008
.net assembly programmazione reflection vb.net
In ambiente .NET è possibile ricavare ed operare sui tipi, i metodi e le proprietà di qualunque assembly valido, grazie alla reflection. Probabilmente saprete già che è sufficiente importare il namespace System.Reflection per accedere a molte classi e funzionalità create a tale scopo.
Potrebbe sorgere, tuttavia, la domanda: come si può ottenere l’oggetto Assembly della propria applicazione? O meglio, dove posso trovare un riferimento all’assembly corrente, ossia quello che, a runtime, conterrà il codice che sto scrivendo? In sostanza, il codice deve recuperare informazioni su se stesso! Si può fare? La reflection consente anche questo?
La risposta è sì. Ecco il codice VB.NET di esempio:
Dim aAssembly As [Assembly] = System.Reflection.Assembly.GetExecutingAssembly
Dim sPath as String = System.Reflection.Assembly.GetExecutingAssembly.Location
La seconda riga mostra come recuperare il percorso fisico del file. Facile no? 