C#

Disposable Email Addresses (DEA)

Quando mi devo iscrivere a qualche sito e devo inserire il mio indirizzo email, sono spesso preoccupato che il mio indirizzo venga utilizzato per spam. Questo succede anche quando non si mette la spunta su "Voglio ricevere informazioni commerciali". La soluzione è abbastanza immediata: creare un indirizzo email ad hoc per effettuare questo tipo di registrazioni. Da qualche anno però esistono vari servizi gratuiti che consentono di creare un indirizzo email per un breve periodo di tempo: magari giusto qualche minuto per ricevere la mail che contiene la password di registrazione o il link per confermare l'iscrizione. Funzionano tutti egregiamente. I gestori dei...

posted @ sabato 23 febbraio 2013 20.10 | Feedback (0)

string.format e separatore date

Oggi ho scoperto che lo string.format utilizzato con le date come ad esempio: string.Format("0:dd/MM/yyyy", myDateTime); è dipendente dalla culture corrente, in particolare il separatore è dipendente da tale impostazione. Quindi in culture tedesca la data verrà stampata nel formato dd.MM.yyyy dato che il separatore è il punto. Per ottenere come separatore lo slash occorre usare: string.Format("0:dd'/'MM'/'yyyy", myDateTime); Technorati tags: c#

posted @ giovedì 10 gennaio 2013 19.39 | Feedback (3)

Orchard

Dopo alcuni test, posso dire che Orchard è un prodotto ancora troppo giovane. La flessibilità data al prodotto causa poca usabilità sia per lo sviluppatore che per l'utente finale. Parlo solo di interfacce perchè non sono andato a modificare il codice sorgente. Un solo libro valido sull'argomento e serve solamente per orientarsi dato l'esiguo numero di pagine (capisco anche che con un prodotto in evoluzione sia inutile scrivere di più). Il numero di moduli che presentano problemi è molto alto, senza contare che all'uscita di una nuova versione bisogna sempre verificare tutto. C'è bisogno di trovare maggior equilibrio.   Technorati tags: Orchard

posted @ venerdì 2 novembre 2012 9.24 | Feedback (1)

Alternativa a Visual Studio

Un piacevole ambiente di sviluppo (che probabilmente esiste da una vita) ma che non conoscevo: http://sharpdevelop.net/OpenSource/SD/Download/   Technorati tags: Visual Studio

posted @ giovedì 22 settembre 2011 19.12 | Feedback (0)

.Substring()

Non sto a spiegare cosa fa perchè tutti l'avranno usato molte volte. Il primo parametro indica l'indice 0-based da cui partire. Il comportamento che non mi aspettavo è che l'indice può arrivare alla Length della stringa senza sollevare eccezioni. [C#] String myString = "abc"; bool test1 = String.Compare(myString.Substring(2, 1), "c") == 0; // This is true. myString.Substring(3, 1); // This throws ArgumentOutOfRangeException. bool test2 = String.Compare(myString.Substring(3, 0), String.Empty) == 0; // This is true. Technorati tags: Csharp

posted @ sabato 17 aprile 2010 11.55 | Feedback (0)

C# o VB.NET?

La domanda si ripete ovunque: ma in una realtà aziendale (di q.si dimensione) è giusto o no decidere un linguaggio comune per tutti? Secondo me è giusto definire un linguaggio di sviluppo e obbligare le risorse a utilizzarlo. Inutile dire che, tra i due, scelgo C#. Le uniche eccezioni possono essere rappresentate da: 1.  un team già avviato al vb.net 2.  la presa in carico di un'applicazione esistente. Nelle nuove realtà io opterei già dai colloqui per la selezione di risorse che sviluppano in C#. Per passare dall'uno all'altro basta poco - è vero - ma a volte i tempi sono davvero rigidi e alcune...

posted @ lunedì 12 aprile 2010 22.23 | Feedback (7)

Quiz: extension methods

Quale sarà l'output? namespace Extensions{  using System;  using ExtensionMethodsDemo1;     // Define extension methods for any type that implements IMyInterface.     public static class Extension     {        public static void MethodA(this IMyInterface myInterface, int i)        {            Console.WriteLine("Extension.MethodA(this IMyInterface myInterface, int i)");        }        public static void MethodA(this IMyInterface myInterface, string s)         {            Console.WriteLine("Extension.MethodA(this IMyInterface myInterface, string s)");        }        public static void MethodB(this IMyInterface myInterface)         {            Console.WriteLine("Extension.MethodB(this IMyInterface myInterface)");        }    }}namespace ExtensionMethodsDemo1{    using System;    using Extensions;    public interface IMyInterface    {        void MethodB();    }    class A : IMyInterface     {        public void MethodB(){Console.WriteLine("A.MethodB()");}    }     class B : IMyInterface    {        public void MethodB() { Console.WriteLine("B.MethodB()");...

posted @ domenica 14 febbraio 2010 10.47 | Feedback (1)

Extension methods

Gli extension methods permettono a metodi statici di essere richiamati usando la sintassi dei metodi di istanza. Questi metodi devono avere almeno un parametro che rappresenta l'istanza del metodo su cui operare. In C# su questo parametro si utilizza la parola chiave this. public static class StringExtensions{     public static bool IsPalindrome(this string s){        ...     } } Questo metodo viene richiamato nel seguente modo: if("hello world".IsPalindrome()){   .... } La classe che definisce l'extension method viene definita "sponsor" e deve essere statica. Ovviamente va importato il namespace della classe sponsor. Vanno usati il minimo indispensabile ;) [Fonte: Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries (2nd Edition) - K. Cwalina, B....

posted @ domenica 14 febbraio 2010 10.14 | Feedback (1)

Pseudoquiz - Tanti modi per fare una cosa

Stimolerei il vostro "modo di programmare". Immaginate di avere una combo su una pagina web [c#]. Vi chiedo di riempirla con i giorni della settimana sapendo che nell'applicazione ci sono molte combo di quel tipo. La pagina web deriva da una BasePage : System.Web.UI.Page e ha un metodo già pronto richiamato dalla OnLoad che si chiama PrepareCombo(). Sentiamo varie soluzioni (ovviamente ottimizzate tempi di sviluppo con buon codice). Nei commenti sono ben accette le critiche alle soluzioni proposte. Technorati tags: Csharp

posted @ venerdì 15 gennaio 2010 20.22 | Feedback (8)

Rinnovo patente

Vediamo di mettere in codice anche questo evento della vita quotidiana che mi è capitato proprio oggi. Come prima idea mi verrebbe da scrivere una classe Patente non statica, istanziarla: Patente myPatente = new Patente(); poi per il rinnovo: myPatente.Rinnova(); dove il metodo non fa altro che aggiornare una proprietà pubblica Anni o privata _anni: public void Rinnova() {      _anni += 10; } Questo è sbagliato per vari motivi: 1. La proprietà privata ha un nome troppo generico (cosa indicano questi anni?); 2. La nomenclatura più appropriata sarebbe Durata e non Anni; 3. Bisognerebbe aggiornarla ogni anno e per il momento non ci interessa. Ci interessa conoscere la validità non per quanti anni...

posted @ giovedì 7 gennaio 2010 18.26 | Feedback (3)

Full C# Archive