Compilazione automatica classi

venerdì 07 dicembre 2007 - 18.43

the_follet Profilo | Newbie

Salve a tutti.
Sto sviluppando una classe astratta con alcuni metodi che si relazionano ad altri metodi dichiarati come mustoverride (ma non è questo il problema... ).

Le classi derivate (all'interno dei metodi che eseguono l'override) hanno tra di loro in comune una buona parte di codice (e aggiungerei "ovviamente" ).

Ciò posto, mi piacerebbe che nel momento in cui viene creata la classe derivata, il compilatore di VS provvedesse ad inserire automaticamente porzioni di codice predefinito all'interno dei metodi che eseguono l'override (cioè quelli dichiarati mustoverride nella classe astratta).

Per essere più chiaro, mi riferisco a qualcosa di simile a ciò che fa (ad esempio) l'interfaccia IDisposeable, la quale aggiunge la sub "dispose" ed il campo boolean "disposed" alla classe in cui viene implementata.

Ho provato ad utilizzare vari TAGS XML senza ottenere alcun risultato...
Questo è l'esempio pratico di ciò che vorrei:


Public MustInherit Class ClasseBase

'Qui ho provato ad utilizzare vari TAGS XML
Protected MustOverride Sub FaiQualcosa( )

End Class


Public Class ClasseDerivata : Inherits ClasseBase

Protected Overrides Sub FaiQualcosa( )
'Qui vorrei che venisse inserito
'automaticamente del codice che
'io ho predefinito tramite i TAGS XML
'(o in qualsiasi altra maniera...)

End Sub

End Class


Mi sembra di aver capito che ciò che voglio lo dovrei ottenere tramite la "serializzazione", ma dopo un pò di ricerca mi sono perso per strada...

Qualcuno di voi saprebbe indicarmi una maniera agevole per ottenere il risultato sperato?
Ringrazio anticipatamente per l'attenzione.
Luca

alextyx Profilo | Expert

Sarà la stanchezza, ma non sono ben sicuro di ciò che hai in mente. Magari, tanto per non sbagliare, prova a dare un'occhiata qui:
http://forum.masterdrive.it/visual-basic-net-18/vb2005-disegnare-funzione-18846/index2.html#post95448

the_follet Profilo | Newbie

Ti ringrazio molto per l'interessamento, Alex, ma purtroppo non è il caricamento dinamico delle librerie che mi interessa

Cerco di riassumere un pò meglio quello che desidero ottenere.

Sappiamo che se creo una classe astratta con dei metodi dichiarati "mustoverride", nel momento in cui vado a creare una classe ereditata quegli stessi metodi mi vengono automaticamente inseriti nell'editor senza che io debba ridigitarli.

Vale a dire:

- definisco la classe astratta

Public Mustinherit Class myAbstractClass

protected mustoverride sub Pippo

end class

- poi digito

public Class miaClasse : Inherits myAbstractClass

a questo punto, appena batto INVIO, l'editor di VS mi inserisce automaticamente a seguire:

Protected Overrides Sub Pippo

End Sub

End Class


Ordunque, quello che io vorrei è che l'editor di VS mi inserisse del testo tra
Protected Overrides Sub Pippo
e
End Sub
che io ho preventivamente definito (suppongo tramite Tags XML, ma non ne sono poi tanto sicuro...).


Questa cosa mi serve per avere una struttura -diciamo- uniforme del metodo sottoposto ad override che però al tempo stesso possa essere editata e modificata a seconda della classe che implemento.

Il risultato finale, per rendere l'idea, potrebbe essere questo:

Public Class miaClasse : Inherits myAbstractClass

Protected Overrides Sub Pippo

Dim Tabella As String '------------------ inserito automaticamente
Tabella = "Archivio" '------------------ questo lo devo scrivere a mano
'If Tabella = "Ciccio" Then cnn.Open '---------- inserito automaticamente, ma magari voglio modificare il codice...
Etc. Etc. '---------------------------- questo lo devo scrivere a mano

End Sub

End Class

Le sciocchezze che ho scritto all'interno del metodo non hanno nessuna importanza, sono solo un esempio.

Nel primo post ho citato l'esempio dell'interfaccia IDisposable, che quando viene implementata aggiunge alcune righe di codice all'interno del metodo Dispose e la variabile booleana disposedValue:

Private disposedValue As Boolean = False ' Per rilevare chiamate ridondanti
' IDisposable
Protected Overridable Sub Dispose(ByVal disposing As Boolean)
If Not Me.disposedValue Then
If disposing Then
' TODO: liberare le risorse non gestite chiamate in modo esplicito
End If
' TODO: liberare le risorse non gestite condivise
End If
Me.disposedValue = True
End Sub

Credo che sia tuttora l'esempio più chiaro di ciò che sto cercando di ottenere, una porzione di codice preconfezionato che possa essere integrato e modificato a seconda delle esigenze

Scusami se ti ho fatto venire il mal di testa, ma se non ne vengo a capo ci rimango troppo male
Ciao e grazie.
Luca

alextyx Profilo | Expert

Credo di avere abbastanza chiaro il tuo problema. Non la soluzione però!
Qualcosa di vagamente simile, ma non automatico come lo vuoi tu, potresti ottenerlo con i code snippet, creandone di personalizzati.
Altrimenti, alla disperazione, potresti far riaprire il tuo codice da un altro programma in VB, che, trattandolo come un file di testo, lo riempia di ciò che ti serve. Poi te lo riapri da IDE e apporti le necessarie modifiche. Forse potresti ottenere una prestazione simile anche da una macro, ma non ne sono certo.

the_follet Profilo | Newbie

Nessun altro ha qualche idea al riguardo?
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5