<?xml version="1.0" encoding="iso-8859-15"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"><channel><title>blogs.ASPItalia.com</title><link>http://blogs.aspitalia.com//sm15455//</link><description>blogs.ASPItalia.com</description><language>it-it</language><copyright>1998-2012 ASPItalia.com/blogs.ASPItalia.com</copyright><generator>Generated by feed.ASPItalia.com 'Cortana' 2012.1.31</generator><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><sy:updateBase>1998-01-01T12:00+00:00</sy:updateBase><lastBuildDate>Wed, 08 Oct 2008 20:04:38 GMT</lastBuildDate><image><title>blogs.ASPItalia.com</title><url>http://gui.aspitalia.com/images/aspitalia/syndication.gif</url><link>http://blogs.aspitalia.com//sm15455//</link></image><item><title>Chi si ricorda dei DataSet?</title><link>http://blogs.aspitalia.com/sm15455/post2402/Ricorda-DataSet.aspx</link><pubDate>Wed, 08 Oct 2008 20:04:38 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2402" border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Mi ricordo le prime demo che ho visto riguardo al .NET. Per l'accesso ai dati il DataSet sembrava l'autentica panacea per tutti i mali. A distanza di ormai 7 anni (un'infinità in termini informatici), i DataSet sono diventati il male impersonificato. &lt;/p&gt; &lt;p&gt;Fondamentalmente questo è quanto di meglio potesse accadere per certi tipi di applicazioni, ma parliamoci chiaro, in Italia si fanno una miriade di piccole-medie applicazioni che non hanno alcuna complessità e che quindi non trarrebbero vantaggio alcuno dall'uso di un bel domain model con un datalayer che persiste tramite ORM o a mano. In questi casi i DataSet non sono solo la linea più veloce, ma anche quella più giusta. Se una piccola applicazione è pagata poco o necessità di essere sviluppata in poco tempo, i DataSet offrono quella velocità di sviluppo e semplicità di apprendimento che un'applicazione con domain model non offre. &lt;/p&gt; &lt;p&gt;Insomma tutto questo discorso per dire che per la voglia di sfighettare, si finisce spesso per costruire dei castelli quando basterebbe un appartamento da 50Mq. Ho visto un'applicazione scritta con domain model che gestisce solo 4/5 entità e richiede quindi almeno il doppio del codice rispetto al dataset. Per carità, l'applicazione è performante e bella da vedere, ma con i dataset la si faceva ancora in quasi metà tempo e senza grandi sforzi. La domanda interessante e che quando ho chiesto il perchè di questa scelta la risposta è stata: &amp;quot;i dataset sono il male, fare un tree tier aiuta a mantenere tutto pulito&amp;quot;. Ineccepibile, se non fosse che per finire l'applicazione ci hanno messo 5 giorni in più in 2 persone. &lt;/p&gt; &lt;p&gt;Il consiglio è sempre lo stesso: fidatevi ancora dei dataset. Non hanno un campo di applicazione ampio, ma ce l'hanno e forse potrebbe essere proprio il vostro :D.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Stay tuned...&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/ADO.NET/" rel="tag"&gt;ADO.NET&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Architettura/" rel="tag"&gt;Architettura&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ORM/" rel="tag"&gt;ORM&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Pattern/" rel="tag"&gt;Pattern&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/sm15455/post2402/Ricorda-DataSet.aspx"&gt;&lt;em&gt;Chi si ricorda dei DataSet?&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>Design Patterns, ADO.NET, Architettura, ORM, Pattern</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2402/Ricorda-DataSet.aspx</guid><slash:comments>12</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2402/Ricorda-DataSet.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2402.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2402</trackback:ping></item><item><title>Caching nel DataLayer</title><link>http://blogs.aspitalia.com/sm15455/post1946/Caching-DataLayer.aspx</link><pubDate>Mon, 29 Jan 2007 18:49:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=1946" border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Quando si parla di velocità di acesso ai dati, nulla è più veloce che non accedere al db, ma recuperare i dati dalla memoria. &lt;/p&gt;&lt;p&gt;E' arrivato il momento di fare in modo che i dati nel mio datalayer vengano messi in cache. Quando leggo un record, se questo rispetta certe regole lo metto in cache e da li lo recupero. Il problema è: se non posso sincronizzarlo con il db tramite SqlCacheDependency (ad esempio perchè non uso SqlServer2005) ed ho bisogno di dati quasi sempre aggiornati (questo implica che non posso usare nemmeno la seconda forma di SqlCacheDependency perchè troppo pesante), come sincronizzo il tutto? La prima risposta che mi sono dato è che semplicemente da codice rimuovo l'elemento dalla cache. &lt;/p&gt;&lt;p&gt;Ma quando ci si trova in ambienti in Server Farm con due o più macchine in cluster? Rimuovere l'oggetto non basta poichè verrebbe rimosso da una sola macchina e rimarrebbe inalterato nelle altre. Un meccanismo per sincronizzare la cache (tipo la Session) non esiste e questo è un bene. La cache deve essere solo veloce. &lt;/p&gt;&lt;p&gt;Tuttavia, non voglio rinunciare alle comodità della cache ed a questo punto ho avuto una specie di illuminazione. Bisogna semplicemente escogitare un metodo per mandare messaggi da un server all'altro per segnalare che un dato è diventato obsoleto e va eliminato.&lt;/p&gt;&lt;p&gt;Visto che sviluppo solo in 2.0 perchè non usare WCF? L'idea è semplice, su una macchina si aggiorna un dato in cache, questo dato viene eliminato e tramite un callback predefinito viene inviato un messaggio ad un servizio che si occupa di smistarlo alle altre macchine. Queste lo ricevono e aggiornano la propria cache. In questo modo posso aggiungere tutte le macchine che voglio e stare tranquillo che il messaggio verrà recapitato  a tutte grazie alle feature di WCF. Inoltre il traffico e le performance sono ottimi perchè ciò che viaggia è un semplice messaggio con una stringa messi in formato binario quindi ottimizzatissimo. L'unica cosa che mi lascia l'amaro in bocca è stata l'impossibilità di realizzare la cosa in P2P per via di alcune limitazioni di WCF. al prossimo summit non mancherò di chiedere lumi in tal senso :).&lt;/p&gt;&lt;p&gt;Tutto questo sarà materia di un articolo futuro (visto il mix non so ancora se su ASPItalia o WINFXItalia) quindi prima o poi vedrete anche il codice (che non fa mai male)&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/.NET_Framework_3.0/" rel="tag"&gt;.NET Framework 3.0&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Architettura/" rel="tag"&gt;Architettura&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ASP.NET/" rel="tag"&gt;ASP.NET&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Cache/" rel="tag"&gt;Cache&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Windows_Communication_Foundation/" rel="tag"&gt;Windows Communication Foundation&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/sm15455/post1946/Caching-DataLayer.aspx"&gt;&lt;em&gt;Caching nel DataLayer&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>Design Patterns, .NET Framework 3.0, Architettura, ASP.NET, Cache, Windows Communication Foundation</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post1946/Caching-DataLayer.aspx</guid><slash:comments>2</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post1946/Caching-DataLayer.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS1946.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=1946</trackback:ping></item><item><title>Collection generiche come propriet&amp;#224;</title><link>http://blogs.aspitalia.com/sm15455/post1764/Collection-Generiche-Proprieta.aspx</link><pubDate>Sun, 08 Oct 2006 22:51:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=1764" border="0" style="width:1px; height:1px;" /&gt;Tempo fa stavo realizzando un primo prototipo in .NET 2.0 e la cosa che mi piaceva molto era l'utilizzo di collection generiche che mi evitavano di dover creare una classe specifica per ogni tipo di collection. Questo significa che nelle mie classi avevo proprietà di tipo List&amp;lt;Classe&amp;gt;. &lt;br /&gt;&lt;br /&gt;All'inizio la cosa non era male, meno codice, meno classi, ma la sintassi dopo un pò ne risentiva e soprattutto mi sono accorto che ne risentiva anche la leggibilità. Certo, List&amp;lt;Classe&amp;gt; e ClasseCollection non sono molto diverse a prima vista, ma se devo fare un metodo di ricerca specifico? E se devo fare dei sort complessi? Le collezioni generiche unite a comparer generici aiutano molto, ma alla fine spargerli nel codice peggiorava leggibilità e manutenibilità.&lt;br /&gt;&lt;br /&gt;Da quel momento ho capito che le classi collection vanno create sempre facendole derivare da List&amp;lt;Classe&amp;gt; per risparmiare codice e creando metodi di ricerca, sort, etc specifici per ogni collection. Al loro interno, le collection eseguono i comandi utilizzando i metodi generici quindi il guadagno in termini di presazioni è poco. ma incapsulando il codice in questo modo si ha la potenza, la tipizzazione e le prestazioni delle collection generiche mantenendo anche la mentalità di sviluppo del modello pre-generics.&lt;br /&gt;&lt;br /&gt;Stay tuned...&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/Architettura/" rel="tag"&gt;Architettura&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Pattern/" rel="tag"&gt;Pattern&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/sm15455/post1764/Collection-Generiche-Proprieta.aspx"&gt;&lt;em&gt;Collection generiche come propriet&amp;#224;&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>Design Patterns, Architettura, Pattern</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post1764/Collection-Generiche-Proprieta.aspx</guid><slash:comments>1</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post1764/Collection-Generiche-Proprieta.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS1764.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=1764</trackback:ping></item><item><title>Come mi piace implementare il pattern Identity Map</title><link>http://blogs.aspitalia.com/sm15455/post1743/Piace-Implementare-Pattern-Identity-Map.aspx</link><pubDate>Sun, 17 Sep 2006 12:13:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=1743" border="0" style="width:1px; height:1px;" /&gt;
L'&lt;a href="http://www.martinfowler.com/eaaCatalog/identityMap.html"&gt;Identity Map&lt;/a&gt; è uno dei pattern più importanti perchè permette di avere in memoria una sola istanza di un'oggetto per ogni sessione. Questo è fondamentale perchè se si hanno 2 versioni di uno stesso oggetto recuperate dal db, queste possono essere potenzialmente diverse causado non pochi problemi.&lt;br /&gt;&lt;br /&gt;Nel mio framework, ho introdotto questo pattern da poco per via dei problemi avuti in passato ed ho optato per un'implementazione che è un pò arzigogolata, ma mi sembra essere flessibile e completa. Alcuni reputano che questo Pattern appartenga allo strato di business, ma trattandosi di recupero dati preferisco mantenerlo nello strato dati.&lt;br /&gt;&lt;br /&gt;Innanzitutto, ho creato un attributo (KeyAttribute) che serve per decorare le classi di dominio identificando quali sono le proprietà chiave. Ce ne possono essere anche più di uno come nei casi in cui si identifica una persona per l'Id preso dal db o per il Codice Fiscale o la parita IVA.&lt;br /&gt;Successivamente, ho creato una classe che contiene una lista degli oggetti letti dal db ed un metodo che gestisce la ricerca. Questo metodo accetta in input la query, il tipo di oggetto che si sta cercando (tramite generic), la chiave ed i valori della chiave in base al quale si vuole verificare se l'oggetto è già in memoria, ed un delegate che identifica quale metodo deve essere invocato per eseguire il mapping tra il datareader restituito dalla query e l'oggetto da creare (potevo usare uno strategy, ma questi metodi preferisco tenerli statici visto che non hanno bisogno di stato). &lt;br /&gt;Nel metodo, viene ispezonata la classe dell'oggetto da recuperare alla ricerca dell'attributo il cui nome corrisponda alla chiave passata in input. Una volta trovato l'attributo, si recuperano le proprietà che questo referenzia e si cerca nella lista degli oggetti se ne esiste uno di quel tipo e con le proprietà trovate che abbiano i valori passati in input al metodo. In caso affermativo viene restituito l'oggetto presente nella lista, altrimenti si esegue la query e viene invocato il delegate per costruire l'oggetto che viene infine inserito nella lista e poi restituito.&lt;br /&gt;Lo storage della lista è stato un nodo che ho chiarito all'ultimo, se mi trovo in un'applicazione web allora viene usato il contesto della richiesta, nel caso di un'applicazione windows utilizzo una variabile statica. Per ora questo codice è cablato, ma confido al più presto di buttare giù un'interfaccia cosìda rendere il meccanismo pluggabile (non si sa mai che esigenze si possono avere nel futuro).&lt;br /&gt;&lt;br /&gt;Stay tuned...&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/Architettura/" rel="tag"&gt;Architettura&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Database/" rel="tag"&gt;Database&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Pattern/" rel="tag"&gt;Pattern&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/sm15455/post1743/Piace-Implementare-Pattern-Identity-Map.aspx"&gt;&lt;em&gt;Come mi piace implementare il pattern Identity Map&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>Design Patterns, Architettura, Database, Pattern</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post1743/Piace-Implementare-Pattern-Identity-Map.aspx</guid><slash:comments>18</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post1743/Piace-Implementare-Pattern-Identity-Map.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS1743.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=1743</trackback:ping></item><item><title>I pattern che uso in genere</title><link>http://blogs.aspitalia.com/sm15455/post1435/Pattern-Uso-Genere.aspx</link><pubDate>Tue, 24 Jan 2006 23:38:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=1435" border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Nella mia carriera di creatore di software penso di aver approcciato al mondo dei pattern in maniera un pò tardiva: solo un paio di anni fa. Da allora il libro che ho letto riletto e controriletto fino a consumarlo con gli occhi è ovviamente il PEAA del sommo Martin Fowler. Questo libro si basa in parte anche sui pattern GoF il cui libro è stato consumato poco meno. &lt;/p&gt;&lt;p&gt;In questi anni di prove e controprove ho storpiato, rivisisto, migliorato, anche provato ad inventare soluzioni che potessero diventare dei pattern, come l'evento per il lazy loading seguito da molti leggendone qua e la per vari blog :D.&lt;/p&gt;&lt;p&gt;Dopo un paio di anni di lavoro, sono arrivato al punto in cui ho creato un mio framework che utilizzo per tutti i progetti che sviluppo. Questo framework sfrutta i seguenti pattern:&lt;/p&gt;&lt;p&gt;Abstract Factory per l'indipendenza dal db e poter scrivere i test per la BLL e il DomainModel&lt;/p&gt;&lt;p&gt;Unit Of Work per gestire gli aggiornamenti sul db&lt;/p&gt;&lt;p&gt;Optimistic Offline Lock per getire gli aggiornamenti concorrenti all'interno di uno UnitOfWork&lt;/p&gt;&lt;p&gt;Lazy Load per caricare le collection separatamente dalle classi che le contengono&lt;/p&gt;&lt;p&gt;Eager Loading per caricare le collection contestualmente alle classi che le contengono&lt;/p&gt;&lt;p&gt;DomainModel per il modello delle classi&lt;/p&gt;&lt;p&gt;DataMapper per interfacciarsi con il db&lt;/p&gt;&lt;p&gt;Singleton per avere una classe che gestisce i settings dell'applicazione (sostituita da un build provider per asp.net 2.0)&lt;/p&gt;&lt;p&gt;Registry per accedere alle istanze delle classi singleton.&lt;/p&gt;&lt;p&gt;Questi sono i pattern presenti nel mio framework, a questi se ne aggiungono altri a seconda delle esigenze dell'applicazione. Conto comunque di parlarne nel tempo di come li ho implementati. E voi quali pattern usate in genere?&lt;/p&gt;&lt;p /&gt;&lt;p&gt;Stay tuned...&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/Pattern/" rel="tag"&gt;Pattern&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/sm15455/post1435/Pattern-Uso-Genere.aspx"&gt;&lt;em&gt;I pattern che uso in genere&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>Design Patterns, Pattern</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post1435/Pattern-Uso-Genere.aspx</guid><slash:comments>3</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post1435/Pattern-Uso-Genere.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS1435.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=1435</trackback:ping></item><item><title>Factory Pattern e Generics per l&amp;#39;astrazione dal db</title><link>http://blogs.aspitalia.com/sm15455/post1235/Factory-Pattern-Generics-Astrazione-DB.aspx</link><pubDate>Thu, 15 Sep 2005 23:29:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=1235" border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Non c'è dubbio che una delle tecniche migliori, anzi la migliore, per ottenere un'astrazione dalla base dati è implementare un Factory Pattern. Con la versione 1.x del framework, siamo obbligati a creare un metodo per ogni classe del DataLayer che dobbiamo istanziare, quindi se abbiamo 50 classi di datalayer, ci sara una classe con 50 metodi, o 50 classi con un metodo. Se si vuole risparmiare, si fa un metodo che accetta l'interfaccia che la classe da creare implementa (passandola come object) e che poi torna la classe come object. Lo svantaggio sta nel fatto di perdere la tipizzazione. Tutto questo perchè nella versione 1.x non possiamo definire dinamicamente il tipo di ritorno di una funzione. &lt;/p&gt;&lt;p&gt;Ecco che l'introduzione dei Generics nella versione 2.0 migliora drasticamente il codice. Nei miei progetti ho un file di configurazione che mappa le interfacce con la classe reale e con l'assembly che la contiene (a volte ho un datalayer spalmato in diversi assembly per particolari esigenze) e altre informazioni. A questo punto mi basta invocare il metodo GetClass della classe Factory specificando l'interfaccia come Generic. Leggendo il file di configurazione viene trovata la classe associata, viene istanziata e tornata ottenendo così lo strong typing caratteristico dei Generics.&lt;/p&gt;&lt;p&gt;&lt;code&gt;internal static T GetClass&amp;lt;T&amp;gt;()&lt;br /&gt;{&lt;br /&gt;   XmlDocument d = new XmlDocument();&lt;br /&gt;   d.Load(&amp;quot;d:\\MyApp\\db.config&amp;quot;);&lt;br /&gt;   string interfaceName = typeof(T).FullName;&lt;br /&gt;   foreach (XmlNode n in d.SelectNodes(&amp;quot;Maps/Map&amp;quot;))&lt;br /&gt;   {&lt;br /&gt;     if (n.Attributes[&amp;quot;interface&amp;quot;].Value == interfaceName)&lt;br /&gt;     {&lt;br /&gt;       Type type = Type.GetType(n.Attributes[&amp;quot;class&amp;quot;].Value);&lt;br /&gt;       object o = Activator.CreateInstance(type, true);&lt;br /&gt;       return (T)o;&lt;br /&gt;     }&lt;br /&gt;   }&lt;/code&gt;&lt;/p&gt;&lt;p&gt;   throw new DALException(&amp;quot;Interface not found in the mapper file&amp;quot;);&lt;br /&gt;  }&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;Il metodo non è nella sua versione completa, ma è comunque una base di partenza.&lt;/p&gt;&lt;p&gt;Stay tuned...&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/Object_Oriented_Programming/" rel="tag"&gt;Object Oriented Programming&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Pattern/" rel="tag"&gt;Pattern&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/sm15455/post1235/Factory-Pattern-Generics-Astrazione-DB.aspx"&gt;&lt;em&gt;Factory Pattern e Generics per l&amp;#39;astrazione dal db&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>Design Patterns, Object Oriented Programming, Pattern</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post1235/Factory-Pattern-Generics-Astrazione-DB.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post1235/Factory-Pattern-Generics-Astrazione-DB.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS1235.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=1235</trackback:ping></item></channel></rss>
