aprile 2005 Blog Posts
Facendo seguito al mio primo post, ho provato a ritestare la situazione avendo installato la Beta 2 del .Net Framework 2.0. Il compilatore C# continua a non segnalare errore nella seguente situazione:
using System;class C<T>{ public void M(T x) { } public void M(int x) { }}public class Overload{ public static void Main() { C<int> obj = new C<int>(); }}
Chiaramente c'è una ambiguità su quale metodo chiamare e quindi il compilatore, come indicato da specifiche, dovrebbe segnalare errore, cosa che invece non fa.
Si consideri il seguente codice:
using System;
class C<T>{ public static void M<T>(T x) {}}
class Program{ static void Main(string[] args) { }}
Il metodo M contiene il parametro T che "nasconde" il parametro T della classe C. In questo è csc a segnalare correttamente un warning che indica una pratica non buona, mentre gmcs non segnala nulla.
Oggi ho sentito dire da personale tecnico (e non è la prima volta) di un cliente una cosa del tipo "questo ... supporta pienamente il modello relazionale: ci sono le tabelle e le relazioni". Spesso si confonde un vincolo di integrità referenziale attribuendogli il significato di relazione. L'integrità referenziale è un modo per esprimere un vincolo tra tuple di una (vincolo "ricorsivo") o due tabelle. Il vincolo può sottintendere una relazione ma il modello relazionale non ne fa esplicita menzione. Il concetto di relazione si ritrova in formalismi più astratti (primo tra tutti, Entity-Relationship).Questo genera spesso la convinzione che il modello relazionale prenda il...
Tempo fa, per motivi di lavoro, ho avuto la necessità di dover cercare librerie .Net che permettono la manipolazione di file PDF.Su SourceForge ne ho trovate diverse (tra l'altro open source e free) ma tutte quante permettono di produrre file PDF ma non di manipolare file PDF esistenti. Se a qualcuno interessasse ne ho trovata una a pagamento ben progettata con un buon modello ad oggetti che permette anche la manipolazione (modifica, ...) di file esistenti: http://www.o2sol.com/pdf4net/products.htm.
Se siete interessate ad ORM, vi consiglio di dare un'occhiata a DataObjects.Net (sempre che non lo conosciate già): www.x-tensive.com. E' il prodotto di una società russa gestita da persone molto competenti. A parte il costo, vi vengono forniti i sorgenti e offre un approccio al problema abbastanza atipico rispetto ad altri ORM.Scrivete le classi del "Domain Layer" e DataObjects.Net si occupa di costruire una base dati relazionale coerente.Ci sono diverse altre interessanti features tra le quali un linguaggio di interrogazione SQL-like ad oggetti.
Ho avuto diverse volte la tentazione di farlo ma poi, vuoi per impegni, vuoi per pigrizia, non mi sono mai deciso.Questa volta ho deciso di iniziare a scrivere qualcosa, anche se non sono certo di mantenere fede all'impegno...
Sto studiando a tempo perso le specifiche di C# 2.0 e sto provando a compilare il codice sia con il compilatore Microsoft (v2.0.40607), sia con il compilatore Mono (gmcs, v1.1.6 per Windows).Si consideri il seguente codice:
using System;
class Class1<T>{ public void Method0(T x) { Console.WriteLine("public void Method0(T x)"); }
public void Method0(int x) { Console.WriteLine("public void Method0(int x)"); }}class Program{ static void Main(string[] args) ...