Questo topic e' stato chiuso dal moderatore.
27/06/11 19:06
Dedalux
Salve a tutti,
potreste aiutarmi a capire come mai questa espressione lambda se la scrivo così funziona
mentre se la scrivo così no
il codice si trova all'interno della classe Mediator che utilizzo per far dialogare due ViewModels
questa è la classe Mediator
ho un ViewModel che notifica in questo modo
e uno che riceve così
tra l'altro l'espressione funzionante me la segna con la sottolineatura in verde dicendo che non ritorna alcun valore in tutti i percorsi del codice....
grazie
potreste aiutarmi a capire come mai questa espressione lambda se la scrivo così funziona
Function(o As Object) Message = DirectCast(o, String) End Function
mentre se la scrivo così no
Function(o As Object) Message = DirectCast(o, String)
il codice si trova all'interno della classe Mediator che utilizzo per far dialogare due ViewModels
questa è la classe Mediator
Public NotInheritable Class Mediator #Region " Costruttori " Shared Sub New() End Sub Private Sub New() End Sub #End Region Shared ReadOnly mInstance As New Mediator Public Shared ReadOnly Property Instance() As Mediator Get Return mInstance End Get End Property Private internalList As New MultiDictionary(Of String, Action(Of Object)) ''' <summary> ''' Registra un colleague per uno specifico messaggio ''' </summary> ''' <param name="callback">Il callback da usare quando il messaggio viene ricevuto</param> ''' <param name="message">Il messaggio per cui registrarsi</param> Public Sub Register(ByVal callback As Action(Of Object), ByVal message As String) internalList.AddValue(message, callback) End Sub ''' <summary> ''' Notifica a tutti i sottoscrittori che sono registrati al messaggio specifico ''' </summary> ''' <param name="message">Il messaggio per cui notificare</param> ''' <param name="args">I parametri del messaggio</param> Public Sub NotifyColleagues(ByVal message As String, ByVal args As Object) If internalList.ContainsKey(message) Then For Each callback As Action(Of Object) In internalList(message) callback(args) Next End If End Sub End Class
ho un ViewModel che notifica in questo modo
Private _message As String Public Property Message As String Get Return _message End Get Set(ByVal value As String) _message = value NotifyPropertyChanged("Message") Mediator.Instance.NotifyColleagues("asd", _message) End Set End Property
e uno che riceve così
Public Sub New() Mediator.Instance.Register(Function(o As Object) Message = DirectCast(o, String) End Function, "asd") End Sub Private _message As String Public Property Message() As String Get Return _message End Get Set(ByVal value As String) _message = value NotifyChanged("Message") End Set End Property
tra l'altro l'espressione funzionante me la segna con la sottolineatura in verde dicendo che non ritorna alcun valore in tutti i percorsi del codice....
grazie
Ultima modifica effettuata da Dedalux 27/06/11 22:44
aaa