152 messaggi dal 08 settembre 2006
Salve a tutti,
in un progetto vb.net alcune funzioni attualmente incluse nel progetto devono essere spostate in dll esterne, abbiamo così creato le dll e inserite delle classi contenenti i metodi;

per non stare a fare ogni volta l'istanza della classe abbiamo definito alcuni metodi di uso generale come shared;

nel progetto principale abbiamo inserito la dll compilata nei riferimenti; commentando la vecchia dichiarazione del metodo ovviamente ogni chiamata genera un errore di mancata corrispondenza del metodo;

andando nella funzione di correzione automatica mi aspettavo che questa indicasse di aggiungere automaticamente l'imports della dll contenente il metodo come avviene per gli assembly d sistema (ad esempio system.string) mentre invece ciò non avviene; bisogna aggiungere esplicitamente l'istruzione imports nomedll in alto nel file incriminato; è possibile evitare questo?

per essere più chiari nella dll è presente questo codice :

Public Class ClsDate

''' <summary>
'''
''' </summary>
''' <returns></returns>
Public Function GetToday() As String
Return Now.ToString
End Function

End Class

nel progetto principale questo :

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim oggi As String = GetToday()
End Sub

la chiamata a GetToday da errore ovviamente, con il CRTL + o ALT+ INVIO appaiono i suggerimenti, mi aspettavo che indicasse di aggiungere imports nomeDll.clsDate come avviene appunto con le funzioni di sistema mentre invece il suggerimento non appare; se invece scrivo :

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim oggi As String = clsDate.GetToday()
End Sub

appare il suggerimento di fare la imports NomeDll

grazie
Modificato da bryger il 31 luglio 2018 13.19 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
beh, questo è il comportamento normale dell'intellisense. Gli Imports te li suggerisce nel momento in cui fai CTRL+. su un TIPO come String o clsDate, non su un membro come IndexOf() o GetToday().

Infatti, se io scrivo questo codice, l'intellisense non mi aiuta perché non sa dove trovare il metodo shared Floor.
Dim a = Floor(4.5)


Quindi, per poterlo usare, devo aggiungere manualmente questa direttiva Imports in cima al file.
Imports System.Math


Allo stesso modo tu dovrai aggiungere manualmente questa direttiva.
Import TuoNamespace.ClsDate

A quel punto potrai fare:
Dim oggi As String = GetToday()


ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.