C#
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...
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#
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
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
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
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...
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()");...
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....
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
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...
Full C# Archive