Casting di un reference a Object a un reference a un altra classe

martedì 13 gennaio 2009 - 16.30

Leonida Profilo | Junior Member

Visto che il precedente thread non ha avuto alcun riscontro provo a semplificare la domanda. Come faccio a convertire un object in un altro reference a un altra classe? Ho provato con una semplice assegnazione ma niente, allora ho eseguito il classico casting: object miaClasse; (nuovaClasse)miaClasse; e ancora niente. Aiutooooo!!!!

rossimarko Profilo | Guru

Ciao,

puoi mandarci la riga di codice che ti da errore e dirci qual'è il messaggio preciso che ti viene restituito?
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

Leonida Profilo | Junior Member

In realtà ho tentato in tutti i modi, ti scrivo l'ultimo tentativo di connessione con le propietà:

...
private object connessione;
public object connessione
{
get{return this.connessione;}
set{this.connessione = value; }
}

...

SqlConnection conn = new SqlConnection(ConnessioneDB_RaccoltaComuni);
Connessione = conn;

Connessione.Open();

Mi dice semplicemente che open() non è un metodo della classe object, l'unica è che SqlConnection non derivi dalla classe Object, possibile?

Leonida Profilo | Junior Member

Bah, in effetti quest'ultima soluzione non può funzionare perchè la classe base non vede la derivata, però mi serve poter convertire la classe Object in SqlConnect...come si faaaa!!!!!

rossimarko Profilo | Guru

Perchè hai l'esigenza di tenere la property come object? Perchè vorresti impostare anche un oggetto di tipo OleDbConnection?
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

Leonida Profilo | Junior Member

Voglio gestire connessione a tipi differenti di DB, passando un valore enumerativo, tramite switch, viene selezionata una connessione e una serie di comandi. Il reference deve quindi essere generico e dev'essere convertito solo quando è noto il tipo di DB.

Ho pensato alle classi generiche, ma in questo caso la struttura del mio DBM non regge più. In questo caso, quando viene istanziato il controllore al caricamento della pagina, devo passare un parametro al costruttore con il tipo prestabilito.

Non conosco molto bene le classi generiche ma non so se poi successivamente, nell'oggetto istanziato, può nuovamente essere modificato il tipo generico della classe senza dover istanziare un nuovo oggetto, non penso sia possibile per logica.

Questo è il mio problema in sisntesi, puoi aiutarmi?

rossimarko Profilo | Guru

Allora usa le interfacce o le classi base che implementano i vari oggetti.

Ad esempio nel caso dell'oggetto SqlConnection l'interfaccia è System.Data.IDBConnection (http://msdn.microsoft.com/en-us/library/system.data.idbconnection.aspx) mentre la classe da cui eredita è System.Data.Common.DbConnection (http://msdn.microsoft.com/it-it/library/system.data.common.dbconnection.aspx).

Nel tuo caso quindi basterà dichiarare la property come IDBConnection oppure come DBConnection invece che come object.

Per capire da dove ereditano i vari oggeti puoi guardare la documentazione: http://msdn.microsoft.com/it-it/library/system.data.sqlclient.sqlconnection.aspx:

Public NotInheritable Class SqlConnection Inherits DbConnection
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

Leonida Profilo | Junior Member

Ok, grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5