Full contact .NET (code only articles)

Articoli con solo codice... (o qsi)

MetaKeywordsControl: implementazione di un html-keywords-builder

In questo articolo definisco un controllo che si renderizzerà nel meta tag HTML keywords. Utile per contestualizzare le parole chiave di ogni pagina al suo contenuto.

Estrarre l'icona di default

Ecco una classe che ci aiuta a caricare l'icona associata ad un certo tipo di file... è ancora da aggiustare perchè alclune icone non vengono correttamente estratte ma credo sia un punto di partenza :-p

Un esempio di Map: "ProduttoriDataMap"

Un esempio pratico di un DataMap con qualche piccola sperimentazione...

Una classe proxy per consumare Google Desktop Search

Dopo che ho installato il Google Desktop Search,  mi sono interessato per trovare sistemi per interoperare programmaticamente con il servizio come accade per quello online. Google Desktop Search non espone un web service classico/standard ma semplicemente aggiungendo il parametro format=xml alla richiesta verrà tornato il risulato in formato xml... ahimè non esiste/non è stato distribuito uno schema di questo xml :( Leggendo la documentazione, facendo qualche prova empirica e grazie all'uso del fedele xsd.exe ho provato a ricavarne una veloce classe proxy. Prima cosa la definizione dello schema dati per la deserializzazione dello stream xml. La descrizione delle varie voci/campi delle strutture sono ben descritte...

Implementare un ThreadContext

L'idea è quella di avere un contesto a livello di Thread in modo da poter avere una bag di oggetti da potervi salvare... un pò come il contesto HTTP che viene associato ad ogni richiesta quando si opera sul web. La soluzione si basa sull'uso dei DataSlot allocabili a livello di Thread, per maggiori informazioni rimando Thread.AllocateNamedDataSlot. E' un idea in fase di studio, usare con cautela ;-p [Program.cs]using System; using System.Threading; using System.Runtime.Remoting.Contexts;namespace ThreadTest { class Program { #region ThreadCounter class ThreadCounter { public static ThreadCounter Current { get { ...

[ENG] Assign a Strong Name to an aspx page

Marco Barzahi [MVP Visual Developer - ASP/ASP.NET] Italian Version Have you ever tried to assign a  Strong Name to an aspx page? In this article we will try to find a solution that could not follow the standard guidelines. In this article I use also terms "mark" or "sign" an aspx page. We start defining a page  SignedPage.aspx like this: <%@ Page language= "c#"%> <%=GetType().AssemblyQualifiedName%> The page does not use  codebehind and it will be compiled in c# - but the choice of language/compiler is indifferent - and,  when the page works, it will emit its AssemblyQualifiedName .  This property will help us to know the name of the linked page class, its namespace, its assembly name with version, culture and PublicKeyToken. The PublicKeyToken  is the indicator; when the value is null it means the page is...

[System.Text] MessageFormatter

using System; using System.Text; using System.Globalization; using System.Collections; using System.Text.RegularExpressions;namespace MarcoBarzaghi.Common.Utils.Text { public class MessageFormatter { Hashtable _placeholders = new Hashtable(); public void Set(string name, object value) { _placeholders[name] = value; } private string OnMapAndFormatValue(Match match) { //la regex cattura anche "{@placeholderName}", comprendendo anche "@" e //parantesi graffe inziali e di chiusura: devo quindi pulire la stringa catturata. string matchedValue = match.Value; string placeholder = new string(matchedValue.ToCharArray(2, matchedValue.Length -3)); //recupero il valore e le eventuali specifiche per la sua formattazione. ...

[Web] Menù dinamici basati sui ruoli

1) Definisco la struttura e relative classi per la gestione della configurazione del menù Imports System.Configuration Imports System.Xml Imports System.Xml.Serialization #Region "MenuItem" Public Class MenuItem < XmlAttributeAttribute() > _ Public text As String < XmlAttributeAttribute()> _ Public navigationUrl As String = String.Empty < XmlElement("role", IsNullable:=False) > _ Public roles As String() < XmlElement("menuItem", IsNullable:=False) > _ Public menuItems As MenuItem() End Class #End Region #Region "Menu Configuration Section Handler" Public Class MenuSectionHandler Implements IConfigurationSectionHandler ...

Giocando con l'interoperabilità (parte 3)

Ecco qui la terza, forse non ultima, parte di "Giocando con l'interoperabilità". Qui la prima parte e qui la seconda., da leggere se volete capire bene questa parte. In questo articolo tratteremo i componenti _radio_, pubblicherò il codice di quello in C# e di uno in java (si proprio qllo della Sun)... un ip-ip-urrà per xml e l'interoperabilità :-p Radio La radio ha il compito di mettersi in ascolto sul canale multicast, riceve e mostrare i messaggi pubblicati dal BroadcastingStudio, qui descritto. Il progetto sarà - come mio solito - una bella console application in cui includerò le classi generate usando il solito schema xsd,...

Giocando con l'interoperabilità (parte 2)

Nella seconda parte dell'articolo "Giocando con l'interoperabilità", qui la prima, illustrerò le componenti "ReporterDashborad" e "BroadCastingStudio". ReporterDashborad Il ReportDashbord è l'applicazione che interoperando con il web service (Editorial Service) accoderà le notizie che dovranno essere divulgate. Qui posterò il codice del Program (la classe del main). E' sottointeso che nel progetto, console application), verranno incluse le strutture di codice generate dall'xsd qui descritto e le classi generate referenziando EditorialService ("Add web reference" bla bla bla... -> ReporterDashboard.InteropGameChannel.EditorialService & Co.). Se non avete mai aggiunto una referenza ad un webservice - e quindi il "bla bla bla" di riempimento è per voi ignoto - potete dare un occhio qui. using System; using System.IO; using...

Giocando con l'interoperabilità (parte 1)

Scopo del gioco è creare un archiettura ben distribuita. Non ci interesserà scrivere del codice portabile e scalabile... le singole componenti dei singoli progetti potrebbero non esserlo, l'archiettura sarà però distribuibile su più macchine. Ecco un overview grafico di quello che andremo a realizzare nel corso di questo post. Riassumento in modo verboso: Una console application (ReporterDashboard) permetterà ad un reporter di inviare ad un servizi editoriale (EditorialService) delle notizie. Le notizie saranno accodate e un _servizio_ (BroadcastingStudio) consumerà la coda delle notizie per pubblicarle in broadcast a tutte le Radio del gruppo connesse. Durante tutto il tragitto la notizie verrà arrichita con le...

Wrappare i testi ad una certa lunghezza di caratteri.

#region WordWrap Methods public static String WordWrap(String aText, int maxWidth) { //spazio separatore delle parole (lo spazio) char _WORD_SEPARATOR_ = '\x20'; //caratteri speciali, caratteri che possono essere usati //come sepratori di parole char[] _SPECIAL_CHARS_ = {':', ';', '.', ',', '?', '!', '-', '+'}; //StringBuilder per costruzione della stringa finale... //la stringa finale sarà lunga almeno tanto qnto qlla iniziale. StringBuilder sb = new StringBuilder(aText.Length); //StringReader per la lettura delle stringa di input StringReader sr...

Reflection vs Factory pattern

#define _USE_FACTORY_ using System; using System.Data; using System.Reflection; using System.Collections; using System.Data.SqlClient; namespace CSharpLab { #region IStringIndexableData public interface IStringIndexableData { object this[string name]{get;} } #endregion #region StringIndexableWrapper /// /// Wrapper per oggetti che si possono indicizzare con stringhe /// public class StringIndexableWrapper: IStringIndexableData { //definisco la firma dell'indexer per stringa delegate object StringIndexerHandler(string index); //definisco una cache dove salverò gli indexer per i vari tipi di oggetti //in modo da evitare la fase di discovery via reflection se già eseguita readonly static Hashtable indexersCache = new Hashtable(); //handler all'indexer StringIndexerHandler indexerHandler; #region Constructors ...

MutuallyExclusiveRadioButton

Un problema tristemente noto è quello legate ai RadioButton in elementi di controlli ripetitivi, datagrid, datalist, etc... Sul support di MSDN è presente anche un articolo "BUG: Radio Buttons Are Not Mutually Exclusive When Used in a Repeater Server Control", http://support.microsoft.com/kb/316495/EN-US/ , con tanto di spiegazione dle problema ma senza nessuna soluzione oproposta di soluzione alla cosa. In questi giorni mi sono trovato a ripondere ad un post sul forum... e ho decisono di perderci qualche ora per vedere di trovare una possibile solzuione, che poi non ho nemmeno guardato in rete per veder se qualcuno aveva risolto in un qlke...

Repository di CommandText, importanza dei parametri e DataAccess globale

L'altro giorno mentre facevo _konsulenza_ ad un amico su un programma che usava mySql ho visto una interessante tecnica, ke mi ha dato modo di fare alkune riflessioni... ma cosa avrà mai visto il M.rkino ke lo ha fatto addirittura pensare?Mah la kosa ke è ho visto è abbanza semplice. Il programma usa mysql, mysql non ha le stored procedure - o per lo meno non le ha nelle versioni ke io konosco - l'esigenza di avere le procedure sul server ha portato gli sviluppatori del programma a crearsi una tabella con tutti i comandi SQL. Ogni richiesta al db...

.NET, java, xml, interoperabilità ma senza il web

Tempo fa mi ero ritrovato a scrivere questo tip Controllare il termine di un comando . Nella mia testa avevo tuttavia in mete che l'uso dello stream I/O sarebbe stato un buon mezzo per interoperare tra processi. Quando si parla di interoperaizone tra java e .Net si parla sempre di messaggi xml (soap) mediato l'suo di web service, per cui trasporto HTTP. Tuttavia mi sono sempre detto a volte potrebbe essere poco pratico/macchinoso mettere in piedi un web server solo per usare una procedura java in una architettura standalone/desktop. Proprio ieri avevo suggerito una mia idea a un collega il...

«aprile»
domlunmarmergiovensab
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011