C#
Ho pubblicato su MSDN Code Gallery una libreria, chiama Light Script Engine, che permette di compilare dinamicamente porzioni di codice C#. Può essere utilizzata, ad esempio, per aggiungere un motore di scripting alle proprie applicazioni. Il sistema, inoltre, fornisce automaticamente un meccanismo con cui passare argomenti al codice dinamico e ricevere valori di ritorno.
Il file ZIP disponibile contiene, oltre alla libreria vera e propria, anche un’applicazione WPF con alcuni pezzi di codice già impostati, grazie ai quali è possibile verificare immediatamente il funzionamento dell’engine:
Su DotNetToscana è disponibile un articolo che illustra più nel dettaglio le sue caratteristiche e fornisce alcuni esempi delle sue...
Utilizzando i metodi per la copia e lo spostamento dei file messi a disposizione dalla classe System.IO.File, se si lavora con percorsi troppo lunghi, si ottiene una PathTooLongException, secondo cui i path devono essere minori di 248 caratteri e i nomi dei file non possono avere più di 260 caratteri. Per aggirare il problema, si possono utilizzare le funzioni delle API di Windows, avendo l'accortezza di specificare il prefisso \\?\ davanti al nome del file. Nel post Getting around PathTooLongException on file move with Windows Native API di Gal Ratner è descritta una semplice classe che mostra l'utilizzo di...
AutoMapper è una libreria indispensabile in tutti quei casi in cui è necessario mappare un oggetto su un altro. Esempio tipico è quando abbiamo un oggetto che rappresenta un’entità del database e lo vogliamo utilizzare per impostare le proprietà di un nostro oggetto di business. Questa attività, estremamente noiosa e ripetitiva, grazie ad AutoMapper si realizza con una semplice riga di codice.
AutoMapper è un progetto open source disponibile su GitHub. Può anche essere scaricato direttamente tramite NuGet. Su CodeProject, inoltre, si può trovare un articolo che mostra come muovere i primi passi con la libreria.
Tag di Technorati: .NET,Programming,C#,VB .NET,ASP .NET,Silverlight
Ho completato il porting della mia libreria per il Text-To-Speech sulla piattaforma .NET Micro Framework. Come sempre, l’ho pubblicata su MSDN Code Gallery, dove è possibile trovare anche gli esempi del suo semplicissimo utilizzo. La libreria è anche disponibile su NuGet. E’ sufficiente effettuare una ricerca per TranslatorService.Speech. All’interno di questo package si trovano sia la nuova versione per il .NET Micro Framework, sia quella per il “Full”. In base al tipo di progetto, Visual Studio referenzierà la libreria corretta. Tag di Technorati: .NET,Programming,C#,.NET Micro Framework,NuGet
Una della novità di C# 4.0 è il supporto ai memory-mapped files. Le nuove classi contenute nel namespace System.IO.MemoryMappedFiles consentono di creare file mappati in memoria che possono essere letti e scritti da processi diversi.
Guardiamo ad esempio una Console Application che apre un memory mapped file e scrive un messaggio al suo interno:
1: static void Main(string[] args)
2: {
3: Console.WriteLine("Scrittura di un messaggio su un memory mapped file...");
4:
5: using (var file = MemoryMappedFile.CreateNew("share", 4096))
6:...
Pochi minuti fa ho caricato su MSDN Code Gallery la nuova versione della mia libreria per il Text-To-Speech basato sul servizio Microsoft Translator Service.
La novità più significativa è l’aggiunta delle versioni asincrone dei metodi. Ad esempio, la controparte asincrona di GetSpeakStream è il nuovo metodo GetSpeakStreamAsync, che ritorna immediatamente e, una volta recuperato lo stream contenente il parlato, genera l’evento GetSpeakStreamCompleted. Ci sono poi i metodi Speak e SpeakAsync, che si occupano di ottenere lo stream tramite il servizio Microsoft e di riprodurlo automaticamente, semplificando quindi l’utilizzo della libreria:
// Per ottenere un Application ID, visita la pagina http://msdn.microsoft.com/en-us/library/ff512420.aspx SpeechSynthesizer speech...
Ho pubblicato su MSDN Code Gallery un servizio WCF REST che permette di inviare e scaricare file da un server remoto. L'esempio include anche una piccola applicazione WPF, senza fronzoli o pattern particolari, che mostra l'utilizzo di tale servizio da parte di un client. Attualmente, il servizio e l'applicazione sono disponibili unicamente in C#, ma a breve aggiungerò anche la versione VB .NET del codice. Tag di Technorati: .NET,Programming,C#,WCF,REST
Quest'oggi ho cercato di fare una cosa all'apparenza banale: creare una finestra di WPF senza l'icona sulla sinistra (ovvero lo stesso risultato che si ottiene impostando la proprietà ShowIcon di una Windows Form su false). Ebbene, NON è possibile: WPF non espone una proprietà che permette di nascondere tale icona. Per ottenere il risultato voluto, l'unica soluzione è ricorrere alle funzioni dell'API di Windows, come descritto nel post A WPF Window Without a Window Icon (the thing you click to get the system menu). In sintesi, si deve eseguire l'override del metodo OnSourceInitialized ed utilizzare il Platform Invoke...
Quest'oggi avevo la necessità di convertire un orario in formato UTC, prelevato da un database, nell'orario locale. Il tipo DateTime mette a disposizione un metodo, ToLocalTime, che sembra perfetto per questo scopo. Tuttavia, il suo utilizzo "diretto" non porta il risultato sperato. Il motivo è semplice: se leggo un campo datetime da un database e lo salvo in una variabile DateTime, .NET suppone che tale orario sia espresso nel formato locale, quindi se su tale variabile invoco il metodo ToLocalTime, ottengo di nuovo l'orario originale. Per ottenere il risultato voluto, è necessario utilizzare un'istruzione come la seguente: ...
Ho pubblicato su MSDN Code Gallery un esempio che sfrutta le API messe a disposizione dal Microsoft Translator Service per ottenere lo stream audio contenente la lettura del testo specificato.
Tag di Technorati: .NET,Programming,C#,MSDN
Full C# Archive