Vedere la classe Program da dll

venerdì 29 giugno 2012 - 14.27
Tag Elenco Tags  C#  |  .NET 3.5  |  .NET 4.0

InsettoScoppiettato Profilo | Junior Member

Come si fa a vedere la classe program ( e le sue eventuali variabili statiche) da una dll?
I altri termini, come si può fare ad utilizzare variabili non appartenenti alla DLL ma ad un progetto chiamante dalla DLL stessa?
Grazie

Alessandro Parma

Vinsent Profilo | Senior Member

Non nè ho la più idea ...però sono curioso e mi sembra un buon spunto per imparare qualcosa di nuovo...posso chiederti lo scopo?

InsettoScoppiettato Profilo | Junior Member

Sto scrivendo un progetto con due form che lavorano in parallelo sempre, uno con un webbrowser e l'altro con tutto quanto serve all'applicazione, compreso un motore di calcolo di web-scraping dall'altro form col webBrowser.
Ora, siccome il controlo webBrowser richiede un appartamento single thread devo usare P/Invoke dagli altri thread per eseguire le automazioni del caso e far navigare il webbroswer, ma poi mi serve the una volta completata la navigazione l'HTML venga salvato da qualche parte per essere accesssibile al motore di calcolo, e mi è sembrato ovvio metterlo in una proprietà static in Program.
La cosa è ovvia quando i due form risiedono nello stesso progetto, in quanto entrambi vedono il processo padre che li ha generati e quindi entrambi vedono Program, ma se uno dei due sta in un assembly separato non è possibile referenziare program, perchè ciò richiederebbe che tra le dipendenze dell'assembly (DLL per intenderci) ci sia anche il progetto madre, ma che a sua volta già referenzia tra le dipendenze proprio l'assembly del form (con ovvio errore di compilazione per riferimento circolare tra dipendenze).
CI deve essere un modo per istanziare delle variabili dentro la DLL che siano poi referenziabili dai metodi che contiene..... qualcuno sa darmi una dritta?
Alessandro Parma

Vinsent Profilo | Senior Member

>CI deve essere un modo per istanziare delle variabili dentro
>la DLL che siano poi referenziabili dai metodi che contiene.....
>qualcuno sa darmi una dritta?

Stavo pensando ad una classe con due variabili (nome, valore) e due Property con lo stesso nome. Un' altra classe con una List della prima e le Function/procedure per le operazioni.
Nel codice sotto(in vb...) ho provato a creare una DLL dove passandogli il valore "nome" di due elementi della List fa la somma dei rispettivi "valore".
Il codice:
Public Class Class1 Dim l_dim As New List(Of mia_dim) Public Function l_dim_valore(ByVal nome As String) As String Dim valore As Integer For a = 0 To l_dim.Count - 1 If l_dim(a).nome = nome Then valore = a Exit For End If Next Return valore End Function Public Sub aggiungi_dim(ByVal nome As String, ByVal valore As Integer) Dim a As New mia_dim a.nome = nome a.valore = valore l_dim.Add(a) End Sub Public Function somma(ByVal dim1 As String, ByVal dim2 As String) Return l_dim_valore(dim1) + l_dim_valore(dim2) End Function End Class Public Class mia_dim Dim nome_1 As String Dim valore_1 As String Property nome() As String Get Return nome_1 End Get Set(ByVal Value As String) nome_1 = Value End Set End Property Property valore() As Integer Get Return valore_1 End Get Set(ByVal Value As Integer) valore_1 = Value End Set End Property End Class

Cosa ne pensi di implementare qualcosa del genere?

PS: scusami se ti faccio perdere tempo con le mie domande...

InsettoScoppiettato Profilo | Junior Member

Scusami ma non ho capito se è una domanda completamente separata oppure non ho colto l'attitenza con il mio problema.
1) nel tuo caso (sopponendo che sia la classe mia_dim che Class1 sono nella stessa DLL) stai usando tutte variabili (o moelgio tipi) noti alla libreria. E quindi non hai bisogno d'altro, quello che mi domando io è come fare a vedere un tipo non noto in fase di compilazione come per esempio Program, che è tipica di un EXE.
2) se invece è una questoine completamente separata, ti consiglio di aprire un altro post, ma credo che non sia così perchè manca una domanda vera e proria nel tuo post. COmunque, anche se non capisco molto di VB, manca un costruttore in Class1... dove inizializzi la lista?
Alessandro Parma

Vinsent Profilo | Senior Member

Ti stò facendo perdere tempo...fai come se non avessi scritto i post sopra!
Se trovi una soluzione spero che la condividi!
Ciao

Vincenzo

InsettoScoppiettato Profilo | Junior Member

Nessun problema.
Spero che i mod cancellino gli ultimi due item di questo post per riportarlo in dima.

Alessandro Parma
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5