Beispiel #1
0
 private void NotifyClient(IDto dto, EventArgs e, string eventName)
 {
     //Debug.Assert(_referenceResolver.ResolveReference(dto.DtoGuid) != null, "Null reference notified");
     try
     {
         if (e is WrappedEventArgs ea &&
             ea.Args is PropertyChangedEventArgs propertyChangedEventArgs &&
             eventName == nameof(INotifyPropertyChanged.PropertyChanged))
         {
             var p = dto.GetType().GetProperty(propertyChangedEventArgs.PropertyName);
             PropertyChangedValueReader valueReader;
             if (p?.CanRead == true)
             {
                 valueReader = new PropertyChangedValueReader(propertyChangedEventArgs.PropertyName, () => p.GetValue(dto, null));
             }
             else
             {
                 valueReader = new PropertyChangedValueReader(propertyChangedEventArgs.PropertyName, () => null);
                 Debug.WriteLine(dto,
                                 $"{GetType()}: Couldn't get value of {propertyChangedEventArgs.PropertyName}");
             }
             Debug.WriteLine($"Server: PropertyChanged {propertyChangedEventArgs.PropertyName} on {dto} sent");
             Send(new SocketMessage(valueReader)
             {
                 MessageType = SocketMessage.SocketMessageType.EventNotification,
                 DtoGuid     = dto.DtoGuid,
                 MemberName  = eventName,
             });
         }
         else
         {
             Send(new SocketMessage(e)
             {
                 MessageType = SocketMessage.SocketMessageType.EventNotification,
                 DtoGuid     = dto.DtoGuid,
                 MemberName  = eventName,
             });
         }
     }
Beispiel #2
0
 internal SocketMessage(PropertyChangedValueReader propertyChangedValueReader)
 {
     _propertChangedValueReader = propertyChangedValueReader;
 }