Di .NET e di altre amenita'

.NET Framework

Il mio framework del cuore.

Nhibernate... ora vi posso dire qualcosa

Ora che è pubblico il mio ultimo sforzo produttivo, posso fare due cose: la prima è il tornare a bloggare, e la seconda dire due parole con una certa cognizione di causa a proposito di NHibernate e più estensivamente a proposito degli ORM. L'occasione mi è data dall'aver lavorato sul sito di XE.NET utilizzando NHibernate, sul quale è basato cuyahoga che a sua vota è appunto base per il sito. Inutile dire che NHibernate è magico. Mappi una classe e ti dimentichi (quasi) che questa in realtà è persistente su un database, ti dimentichi persino di che database si tratta e questo,...

Tipi, proprietà e reflection

Ho letto il post di Lanny stamattina e ho deciso che probabilmente era il caso di postare un esempietto su come sia preferibile lavorare con la reflection per evitare i problemi più comuni. L'esempio di Lanny funziona ed è utile per capire come funziona la reflection, ma dovendo lavorare con essa è opportuno fare affidamento su una serie di classi belle e pronte che il framework mette a disposizione. Oltre a snellire il lavoro eliminando la necessità di riscrivere del codice che è già perfettamente funzionane, consentono soprattutto di avere un modo affidabile di operare conversioni di tipo senza incorrere...

SCREENCAST: Implementare una Abstract Factory in C#

Il primo screencast di XE.NET è stato pubblicato sul sito della community. Chiunque voglia contribuire con un proprio screencast è il benvenuto. E' sufficiente leggere le istruzioni pubblicate in questa pagina, trovare un argomento e darsi da fare. Link: SCREENCAST: Implementare una Abstract Factory in C# powered by IMHO 1.3 per leggere il post originale o inviare un commento visita il seguente indirizzo: SCREENCAST: Implementare una Abstract Factory in C#

Lorem Ipsum Add-in: Ecco il codice e...

Ci ho messo un pò di più di quello che avevo promesso, ma alla fine eccomi a postare il codice del plugin Lorem Ipsum per Live Messenger 8.0. Il motivo del ritardo è presto detto: mi sono soffermato a cpire come realizzare una feature che mi interessava parecchio, almeno quanto so alletterà i maniaci del messaggino-sul-messenger. ora è possibile immettere i propri messaggi e farli ruotare al posto di quelli generati da Lorem Ipsum. Giusto per smentire quello che avevo detto qualche post fa, ho scoperto che valorizzando la proprietà SavedState dell'istanza di messenger è possibile salvare delle impostazioni che possano...

Live Messenger Add-in: Lorem Ipsum

Stanotte, preso dalla voglia di fare qualcosa di "pazzesco" (o forse dalla voglia di far nulla...) ho rispolverato un post di Giorgio Sardo a proposito dei plugin per Live Messenger. In breve, come mi capita spesso ho buttato giù un po' di codice unendo cose che apparentemente non hanno nulla a che vedere le une con le altre e ne è uscito un Lorem Ipsum Add-in per Live Messenger. A che serve? Beh, visto che c'è la moda di postare ogni genere di cosa nel messaggio personale di Live Messenger e che io in questo difetto di attenzione e non...

VS2005: Uno snippet per validare i parametri

Forse non sono in molti che gestiscono la validazione dei parametri di input di un metodo, tuttavia considerato che sarebbe una buona cosa farlo, vi propongo uno snippet che mi sono creato che dovrebbe semplificare questa ripetitiva attività. Lo snippet, che nell'esempio è dedicato al caso delle stringhe, compila per noi una sezione di validazione e ci consente di immettere il nome del parametro e il messaggio che vogliamo dare nell'eccezione. <?xml version="1.0" encoding="utf-8" ?><CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">    <CodeSnippet Format="1.0.0">        <Header>            <Title>param_str</Title>            <Shortcut>param_str</Shortcut>            <Description>Code snippet for string parameter validation</Description>            <Author>Andrea Boschin</Author>            <SnippetTypes>                <SnippetType>Expansion</SnippetType>            </SnippetTypes>        </Header>        <Snippet>            <Declarations>                <Literal>                    <ID>argument</ID>                    <ToolTip>Argument name</ToolTip>                    <Default>name</Default>                </Literal>                <Literal>                    <ID>messageNull</ID>                    <ToolTip>Exception Message for null string</ToolTip>                    <Default>Argument cannot be null</Default>                </Literal>                <Literal>                    <ID>messageEmpty</ID>                    <ToolTip>Exception Message for empty string</ToolTip>                    <Default>Argument cannot be empty</Default>                </Literal>            </Declarations>            <Code Language="csharp">                <![CDATA[if ($argument$ == null)                throw new ArgumentNullException("$argument$", "$messageNull$");                if ($argument$ == string.Empty)                throw new ArgumentException("$argument$", "$messageEmpty$");$end$]]>            </Code>        </Snippet>    </CodeSnippet></CodeSnippets> Alla vostra fantasia tutte le possibili varianti. powered by IMHO 1.3   per leggere il post originale o inviare un commento visita il seguente indirizzo: VS2005: Uno snippet per validare i parametri

Framework .NET 2.0: Convertire tipi con .NET 2.0, Generics e Reflection

Un esperienza pratica di lavoro con WebServices, applicazioni legacy, e Framework .NET mi ha suggerito l'argomento dell'articolo che questa settimana è apparso sulle "colonne" di UgiDotNet. L'articolo dimostra come, sfruttando gli strumenti del framework 2.0 - mi riferisco a reflection e generics - si possa abbattere notevolmente il tempo di sviluppo di una applicazione. Non solo, l'implementazione è anche un bell'esempio di design, che grazie ad alcuni accorgimenti ha reso flessibile ed adattabile a future esigenze il codice.  Tenete presente che questo lavoro ci ha consentito di evitare la realizzazione di una cinquantina di convertitori ad-hoc che avrebbero richiesto un tempo esponenzialmente più elevato. Un...

ASP.NET 2.0: I ResourceProvider

Prosegue con questo post la saga, iniziata quando ho parlato degli ExpressionBuilders, dedicata alle risorse tipicamente utilizzate nelle applicazioni ASP.NET per depositare stringhe, e in genere proprietà da utilizzare nel rendering dell'interfaccia. In quel post spiegavo come realizzare un ExpressionBuilder che permettesse facilmente dei leggere le risorse da un database anziche da un più consueto file resx. Esiste tuttavia un altro metodo, per fare la medesima cosa, che in realtà è quello che il framework indica come quello corretto. Chi avesse provato a realizzare l'ExpressionBuilder forse si sarà reso conto che pur funzionando egregiamente esso ha delle limitazioni fastidiose. Giusto per indicarne una...

Web Services: Usare tipi condivisi tra diversi Web Services

Chiunque abbia sviluppto un'applicazione che si appoggia a diversi web-services si sarà trovato nella condizione di avere una moltitudine di proxy generati che fanno capo a diversi oggetti del dominio applicativo. Molto spesso ci si trova nella condizione di avere dei duplicati in questi oggetti che per il fatto stesso di essere classi diverse, pur avendo le medesime proprietà non sono "compatibili". Perciò, ad esempio avendo un webservice che restituisce un Ordine ed un secondo webservice che lo richiede in input non è possibile passare al secondo direttamente l'oggetto restituito dal primo. Nel framework 2.0 esiste una soluzione a questo...

Simulare il fallback delle Culture

Chi di voi ha mai avuto a che fare con localizzazione e globalizzazione di applicazioni .NET sa bene come funziona il meccanismo del fallback delle culture. In soldoni, per chi non lo sapesse si tratta di quel pricipio per cui se tra le risorse non esiste quella nella cultura che è richiesta, il framework provvedde a trovarne una il più possibile adatta. Quello che forse non è chiaro a tutti è che implementando l'expression builder di cui ho parlato in un post ...

Full .NET Framework Archive