Example #1
0
        // 开启客户端
        private void StartClient()
        {
            BinaryServerFormatterSinkProvider serverProvider = new BinaryServerFormatterSinkProvider();
            BinaryClientFormatterSinkProvider clientProvider = new BinaryClientFormatterSinkProvider();

            serverProvider.TypeFilterLevel = TypeFilterLevel.Full;

            IDictionary props = new Hashtable();

            props["port"] = 0;
            TcpChannel channel = new TcpChannel(props, clientProvider, serverProvider);

            ChannelServices.RegisterChannel(channel);

            //// 配置通道及传输格式
            //string cfg = "Client.config";
            //RemotingConfiguration.Configure(cfg);

            // 由config中读取相关数据
            string broadCastObjURL = ConfigurationManager.AppSettings["BroadCastObjURL"];

            // 获取广播远程对象
            watch = (IBroadCast)Activator.GetObject(typeof(IBroadCast), broadCastObjURL);

            wrapper = new EventWrapper();
            wrapper.LocalBroadCastEvent += new BroadCastEventHandler(BroadCastingMessage);
            watch.BroadCastEvent        += new BroadCastEventHandler(wrapper.BroadCasting);
            SetSubscribe(true);
        }
Example #2
0
        public async Task ReplaceAsync(T aggregate)
        {
            using (var session = dbContext.Database.Client.StartSession())
            {
                try
                {
                    await session.WithTransaction(
                        async (s, ct) =>
                    {
                        aggregate.CheckState();

                        var filter = Builders <T> .Filter.Eq(MongoDefaultSettings.IdName, aggregate.Id.Value);

                        await collection.ReplaceOneAsync(filter, aggregate, new ReplaceOptions {
                            IsUpsert = false
                        });

                        foreach (var @event in aggregate.GetEvents())
                        {
                            var mongoEvent       = new EventWrapper(Guid.NewGuid().ToString(), @event.GetType(), @event, aggregate.Id.Value);
                            var eventsCollection = session.Client.GetDatabase(mongoDbSettings.DatabaseName).GetCollection <EventWrapper>(MongoDefaultSettings.EventsDocumentName);
                            await eventsCollection.InsertOneAsync(mongoEvent);
                        }
                    });
                }
                catch (Exception exception)
                {
                    logger.LogError($"{Messages.NonTransientExceptionCaught} ${exception.Message}.", exception);
                }
            }
        }
Example #3
0
 public static void RegisterBlockPersistEvent(NeoSystem neoSystem)
 {
     if (_actor == null)
     {
         _actor = neoSystem.ActorSystem.ActorOf(EventWrapper <Blockchain.PersistCompleted> .Props(Blockchain_PersistCompleted));
     }
 }
Example #4
0
        private Func <object, BasicDeliverEventArgs, Task> Consumer_Received(string queue)
        {
            return(async(object sender, BasicDeliverEventArgs eventArgs) =>
            {
                var message = Encoding.UTF8.GetString(eventArgs.Body.Span);
                var wrapper = new EventWrapper
                {
                    Key = $"{eventArgs.Exchange}:{queue}:{eventArgs.RoutingKey}",
                    Exchange = eventArgs.Exchange,
                    Queue = queue,
                    RouteKey = eventArgs.RoutingKey,
                    Event = message,
                };

                try
                {
                    await _handler.OnEvent(wrapper, eventArgs);
                }
                catch (Exception ex)
                {
                    _logger.LogError($"ERROR Processing message \"{message}\", exception: {ex.Message}");
                    if (_channelDict.TryGetValue($"{eventArgs.Exchange}:{queue}", out var channel))
                    {
                        channel.BasicNack(eventArgs.DeliveryTag, false, false);
                    }
                }
            });
        }
Example #5
0
 public EventNode(EventWrapper evt, SetMemberNode node, bool isSubscription)
 {
     _Event          = evt;
     _IsSubscription = isSubscription;
     _Node           = node;
     _Callback       = Expr.CastTransparent(node.Value, _Event.EventHandlerType);
 }
Example #6
0
        void DoConsume()
        {
            tokenSource = new CancellationTokenSource();
            task        = Task.Factory.StartNew(async token =>
            {
                var cancellationToken = (CancellationToken)token;

                while (!cancellationToken.IsCancellationRequested)
                {
                    EventWrapper result = default;
                    try
                    {
                        var value = (string)await redis.GetDatabase().ListLeftPopAsync(settings.ListKey);
                        if (value == null)
                        {
                            await Task.Delay(TimeSpan.FromSeconds(1));
                            continue;
                        }

                        result = JsonSerializer.Deserialize <EventWrapper>(value);
                    }
                    catch (Exception e)
                    {
                        logger.LogError($"Error occured: {e.Message}");
                        continue;
                    }

                    logger.LogInformation($"Consume message '{result.Name}:{result.Message}'.");

                    var eventName    = result.Name;
                    var eventMessage = result.Message;
                    await ProcessEventAsync(eventName, eventMessage);
                }
            }, tokenSource.Token);
        }
Example #7
0
        public async Task SendStatus(StatusBase status, bool useQueue = true)
        {
            var t = status.GetType();

            status.Name     = t.Name;
            status.DateTime = DateTime.UtcNow;

            var ser = JsonConvert.SerializeObject(status);

            var evt = new EventWrapper
            {
                Data      = ser,
                EventName = t.Name
            };

            var evtSer = JsonConvert.SerializeObject(evt);

            if (!useQueue)
            {
                _storeStatus(evtSer);
            }
            else
            {
                await _mqttService.Send("events", evtSer);
            }
        }
Example #8
0
        private void Form1_Load(object sender, EventArgs e)
        {
            BinaryServerFormatterSinkProvider serverProvider = new
                                                               BinaryServerFormatterSinkProvider();
            BinaryClientFormatterSinkProvider clientProvider = new
                                                               BinaryClientFormatterSinkProvider();

            serverProvider.TypeFilterLevel = TypeFilterLevel.Full;

            IDictionary props = new Hashtable();

            props["port"] = 0;
            HttpChannel channel = new HttpChannel(props, clientProvider, serverProvider);

            ChannelServices.RegisterChannel(channel, false);

            watch = (IBroadCast)Activator.GetObject(
                typeof(IBroadCast), "http://localhost:8080/BroadCastMessage.soap");

            wrapper = new EventWrapper();
            wrapper.LocalBroadCastEvent += new BroadCastEventHandler(BroadCastingMessage);
            watch.BroadCastEvent        += new BroadCastEventHandler(wrapper.BroadCasting);

            //watch.BroadCastEvent += new BroadCastEventHandler(BroadCastingMessage);
        }
Example #9
0
        public void StartClient()
        {
            BinaryServerFormatterSinkProvider serverProvider = new BinaryServerFormatterSinkProvider();
            BinaryClientFormatterSinkProvider clientProvider = new BinaryClientFormatterSinkProvider();

            serverProvider.TypeFilterLevel = TypeFilterLevel.Full;

            IDictionary props = new Hashtable();

            props["port"] = 0;
            TcpChannel channel = new TcpChannel(props, clientProvider, serverProvider);

            ChannelServices.RegisterChannel(channel);

            // 由config中读取相关数据
            string broadCastObjURL = ConfigurationManager.AppSettings["BroadCastObjURL"];
            string upCastObjURL    = ConfigurationManager.AppSettings["RobotUpCastObjURL"];

            // 获取广播远程对象
            watch   = (IBroadCast)Activator.GetObject(typeof(IBroadCast), broadCastObjURL);
            wrapper = new EventWrapper();
            wrapper.LocalBroadCastEvent += new BroadCastEventHandler(broadCastHandler.OnBroadCastingInfo);
            watch.BroadCastEvent        += new BroadCastEventHandler(wrapper.BroadCasting);

            // upcast
            upCast = (IUpCast)Activator.GetObject(typeof(IUpCast), upCastObjURL);
        }
        private async Task HandleChangesAsync(IReadOnlyCollection <Change> changes, CancellationToken cancellationToken)
        {
            var migratedEventStore = GetMigratedEventStore();
            var successEventStore  = GetValidationSuccessEventStore();
            var failureEventStore  = GetValidationFailureEventStore();


            foreach (var change in changes)
            {
                var @event = change.GetEvent(_eventTypeResolver);

                var validator = _validators
                                .SingleOrDefault(m => m.IsSubscribedTo(@event));

                EventWrapper expectedEventWrapper = validator != null
                    ? validator.GetExpectedValue(@event, change)
                    : change;

                EventWrapper actualEventWrapper;
                try
                {
                    actualEventWrapper = await migratedEventStore.LoadEventWrapperAsync(expectedEventWrapper.Id);
                }
                catch (Exception ex)
                {
                    throw new ApplicationException(
                              $"Error when trying to load eventWrapper with Id" +
                              $" {expectedEventWrapper.Id}. {ex.Message} + {ex.InnerException?.Message}");
                }

                var completedEvent = new ValidationCompletedEvent()
                {
                    OriginalId          = expectedEventWrapper.Id,
                    ComparableId        = actualEventWrapper.Id,
                    OriginalEventData   = expectedEventWrapper.EventData.ToString(Formatting.None),
                    ComparableEventData = actualEventWrapper.EventData.ToString(Formatting.None),
                    OriginalEventType   = expectedEventWrapper.EventType,
                    ComparableEventType = actualEventWrapper.EventType,
                };
                bool saved;
                if (!Validator.Equals(expectedEventWrapper, actualEventWrapper))
                {
                    saved = await failureEventStore.AppendToStreamAsync(change.StreamInfo.Id,
                                                                        change.StreamInfo.Version - 1,
                                                                        new[] { completedEvent });
                }
                else
                {
                    saved = await successEventStore.AppendToStreamAsync(change.StreamInfo.Id,
                                                                        change.StreamInfo.Version - 1,
                                                                        new[] { completedEvent });
                }

                if (!saved)
                {
                    throw new ApplicationException("Failed to save.");
                }
            }
        }
Example #11
0
        public PTPEditorVM(PTP ptp)
        {
            int sourceInd = Static.EncodingManager.GetPersonaEncodingIndex(Settings.AppSetting.Default.PTPOldDefault);

            if (sourceInd >= 0)
            {
                OldEncoding = sourceInd;
            }
            else
            {
                OldEncoding = 0;
            }

            sourceInd = Static.EncodingManager.GetPersonaEncodingIndex(Settings.AppSetting.Default.PTPNewDefault);
            if (sourceInd >= 0)
            {
                NewEncoding = sourceInd;
            }
            else
            {
                NewEncoding = 0;
            }

            sourceInd = Static.BackManager.GetBackgroundIndex(Settings.AppSetting.Default.PTPBackgroundDefault);
            if (sourceInd >= 0)
            {
                SelectedBackgroundIndex = sourceInd;
            }
            else
            {
                SelectedBackgroundIndex = 0;
            }

            View = Settings.AppSetting.Default.PTPImageView;
            EncodingManagerEW = new EventWrapper(Static.EncodingManager, this);

            foreach (var a in ptp.names)
            {
                Names.Add(new PTPNameEditVM(a, OldEncoding, NewEncoding, SelectedBackgroundIndex));
            }



            foreach (var a in ptp.msg)
            {
                var name = Names.FirstOrDefault(x => x.Index == a.CharacterIndex);
                Tuple <ImageDrawing, ImageDrawing, ImageDrawing, RectangleGeometry> tuple;
                if (name == null)
                {
                    tuple = new Tuple <ImageDrawing, ImageDrawing, ImageDrawing, RectangleGeometry>(null, null, BackgroundDrawing, ClipGeometry);
                }
                else
                {
                    tuple = new Tuple <ImageDrawing, ImageDrawing, ImageDrawing, RectangleGeometry>(name.OldNameVisual.TextDrawing, name.NewNameVisual.TextDrawing, BackgroundDrawing, ClipGeometry);
                }

                MSG.Add(new PTPMsgVM(a, tuple, Settings.AppSetting.Default.PTPOldDefault, Settings.AppSetting.Default.PTPNewDefault, SelectedBackgroundIndex));
            }
        }
Example #12
0
 protected virtual void Start()
 {
     RotateEvent       = new EventWrapper <IRotateHandler, MultiTouchPointerEventData>((h, e) => h.OnRotate(this, e, DeltaRotate));
     PanEvent          = new EventWrapper <IPanHandler, MultiTouchPointerEventData>((h, e) => h.OnPan(this, e, e.centroidDelta));
     PinchEvent        = new EventWrapper <IPinchHandler, MultiTouchPointerEventData>((h, e) => h.OnPinch(this, e, DeltaPinch));
     GestureStartEvent = new EventWrapper <IGestureStartHandler, MultiTouchPointerEventData>((h, e) => h.OnGestureStart(e));
     GestureEndEvent   = new EventWrapper <IGestureEndHandler, MultiTouchPointerEventData>((h, e) => h.OnGestureEnded(e));
 }
Example #13
0
 public EventServer(int clientCount)
 {
     wrappers = new EventWrapper[Math.Max(clientCount, defaultClientCount)];
     for (int i = 0; i < wrappers.Length; i++)
     {
         wrappers[i] = new EventWrapper();
     }
 }
Example #14
0
        public void EventWrapper_Should_Be_Equal_To_Himself()
        {
            // Arrange, Act
            var wrappedEvt = new EventWrapper <int>(new InputAggregateCreated(1));

            // Assert
            wrappedEvt.Equals(wrappedEvt).Should().BeTrue();
        }
Example #15
0
        private void HandleEvent(object service, EventWrapper @event)
        {
            var methodInfo     = service.GetType().GetMethod("Handle");
            var eventParameter = new object[1] {
                @event.EventValue
            };

            methodInfo.Invoke(service, eventParameter);
        }
Example #16
0
 public EventServer(int clientCount)
 {
     //wrappers = new EventWrapper[Math.Max(clientCount / distributionFactor, distributionFactor)];
     wrappers = new EventWrapper[Math.Max(clientCount, defaultClientCount)];
     for (int i = 0; i < wrappers.Length; i++)
     {
         wrappers[i] = new EventWrapper();
     }
 }
        public EventWrapper GetExpectedValue(IEvent e, EventWrapper eventWrapper)
        {
            if (_transformers.TryGetValue(eventWrapper.EventType, out Func <IEvent, EventWrapper, EventWrapper> handler))
            {
                return(handler(e, eventWrapper));
            }

            return(eventWrapper);
        }
Example #18
0
        public async Task ModifyAsync(Action <T> modifyLogic, IId <string> id)
        {
            await Policy
            .Handle <MongoWaitQueueFullException>()
            .WaitAndRetryForeverAsync(retryAttempt => TimeSpan.FromMilliseconds(Math.Pow(2, retryAttempt)))
            .ExecuteAsync(async() =>
            {
                using (var session = dbContext.Database.Client.StartSession())
                {
                    try
                    {
                        await session.WithTransaction(
                            async(s, ct) =>
                        {
                            var entityCollection = session.Client.GetDatabase(mongoDbSettings.DatabaseName).GetCollection <T>(MongoUtils.GetCollectionName <T>());
                            var eventsCollection = session.Client.GetDatabase(mongoDbSettings.DatabaseName).GetCollection <EventWrapper>(MongoDefaultSettings.EventsDocumentName);

                            ReplaceOneResult result;
                            T foundAggregate;

                            do
                            {
                                var filter     = Builders <T> .Filter.Eq(MongoDefaultSettings.IdName, id.Value);
                                foundAggregate = await GetFirstFromCollectionAsync(entityCollection, filter);
                                var version    = foundAggregate.Etag;
                                foundAggregate.RegenerateEtag();

                                modifyLogic(foundAggregate);

                                foundAggregate.CheckState();

                                filter = filter & Builders <T> .Filter.Eq(MongoDefaultSettings.EtagName, version);

                                result = await entityCollection.ReplaceOneAsync(filter, foundAggregate, new ReplaceOptions {
                                    IsUpsert = false
                                });
                            } while (result.ModifiedCount != 1);

                            //events are saved after sucessfull transformation
                            if (result.ModifiedCount == 1)
                            {
                                foreach (var @event in foundAggregate.GetEvents())
                                {
                                    var mongoEvent = new EventWrapper(Guid.NewGuid().ToString(), @event.GetType(), @event, foundAggregate.Id.Value);
                                    eventsCollection.InsertOne(mongoEvent);
                                }
                            }
                        });
                    }
                    catch (MongoWaitQueueFullException exception)
                    {
                        logger.LogError($"{Messages.NonTransientExceptionCaught} ${exception.Message}.", exception);
                        throw;
                    }
                }
            });
        }
Example #19
0
 public NoopEventReaction(
     ILogger <NoopEventReaction <TCallbackEvent> > logger,
     EventWrapper eventWrapper)
 {
     _logger       = logger;
     _eventWrapper = eventWrapper;
     Event         = _eventWrapper.Event as TCallbackEvent
                     ?? new TCallbackEvent();
 }
Example #20
0
        public List <EventWrapper> RemoveEvent(int eventId, ApiDateTime date, EventRemoveType type)
        {
            var events = new List <EventWrapper>();
            var evt    = _dataProvider.GetEventById(eventId);
            var cal    = _dataProvider.GetCalendarById(Convert.ToInt32(evt.CalendarId));

            if (evt.OwnerId.Equals(SecurityContext.CurrentAccount.ID) || CheckPermissions(evt, CalendarAccessRights.FullAccessAction, true) || CheckPermissions(cal, CalendarAccessRights.FullAccessAction, true))
            {
                if (type == EventRemoveType.AllSeries || evt.RecurrenceRule.Freq == Frequency.Never)
                {
                    _dataProvider.RemoveEvent(eventId);
                    return(events);
                }

                else if (type == EventRemoveType.Single)
                {
                    evt.RecurrenceRule.ExDates.Add(new RecurrenceRule.ExDate()
                    {
                        Date = date.UtcTime.Date, isDateTime = false
                    });
                }

                else if (type == EventRemoveType.AllFollowing)
                {
                    evt.RecurrenceRule.Until = date.UtcTime.Date;
                    if (!evt.AllDayLong)
                    {
                        evt.RecurrenceRule.Until = evt.RecurrenceRule.Until.Add(evt.UtcStartDate.TimeOfDay);
                    }
                }

                evt = _dataProvider.UpdateEvent(int.Parse(evt.Id), int.Parse(evt.CalendarId), evt.OwnerId, evt.Name, evt.Description,
                                                evt.UtcStartDate, evt.UtcEndDate, evt.RecurrenceRule, evt.AlertType, evt.AllDayLong,
                                                evt.SharingOptions.PublicItems);

                //define timeZone
                TimeZoneInfo timeZone;
                if (!CheckPermissions(cal, CalendarAccessRights.FullAccessAction, true))
                {
                    timeZone       = _dataProvider.GetTimeZoneForSharedEventsCalendar(SecurityContext.CurrentAccount.ID);
                    evt.CalendarId = SharedEventsCalendar.CalendarId;
                }
                else
                {
                    timeZone = _dataProvider.GetTimeZoneForCalendar(SecurityContext.CurrentAccount.ID, int.Parse(evt.CalendarId));
                }

                events = new EventWrapper(evt, SecurityContext.CurrentAccount.ID, timeZone).GetList(evt.UtcStartDate, date.UtcTime.AddMonths(_monthCount));
            }
            else
            {
                _dataProvider.UnsubscribeFromEvent(eventId, SecurityContext.CurrentAccount.ID);
            }

            return(events);
        }
Example #21
0
        public void EventWrapper_Should_Have_Key_Compose_With_StreamId_VersionId_InsertDate()
        {
            // Arrange
            var wrappedEvt = new EventWrapper <int>(new InputAggregateCreated(1));
            // Act
            var keyeqquals = wrappedEvt.Key == $"1:0:{wrappedEvt.InsertDate}";

            // Assert
            keyeqquals.Should().BeTrue();
        }
        public void Broadcast(IPubSubEvent @event)
        {
            var eventWrapper = new EventWrapper
            {
                Type = @event.GetType(),
                Json = JsonConvert.SerializeObject(@event)
            };

            _context.Clients.All.PubSubBusEvent(eventWrapper);
        }
        /// <summary>
        /// Default Constructor
        /// </summary>
        public EventController()
        {
            CoreBuilder coreBuilder = CoreBuilder.GetInstance();

            this.IEventMgr = coreBuilder.GetManager <IEventMgr>(CoreBuilder.IEVENTMGR);

            this.EventWrapper = EventWrapper.GetInstance();

            SystemLogWrapper = SystemLogWrapper.GetInstance();
        }
        public void PrepareData(EventsContext context, IEnumerable <DomainEvent> events)
        {
            if (events != null && events.Count() > 0)
            {
                var eventsWrapped = events.Select(ev => EventWrapper.Wrap(ev)).ToArray();
                context.AddRange(eventsWrapped);

                context.SaveChanges();
            }
        }
Example #25
0
        private void LoadEventSobjs()
        {
            var sobjs = Resources.LoadAll <EventSobj>("Event");

            EventDict = new NameidSobjDict <EventSobj>(sobjs);
            foreach (var sobj in sobjs)
            {
                var wrapper = new EventWrapper(sobj);
            }
        }
        private EventWrapper <T> TryWrap <T>(T @event) where T : IntegratedEvent
        {
            //var context = _tenantContextAccessor.TenantContext;
            var package = new EventWrapper <T>(@event)
            {
                TenantId = context?.TenantId
            };

            return(package);
        }
Example #27
0
        public void EventWrapper_ToString_Should_Return_Concatatnation_Of_Key_And_EventId()
        {
            // Arrange
            var wrappedEvt = new EventWrapper <int>(new InputAggregateCreated(1));
            // Act
            var keyeqquals = wrappedEvt.ToString() == $"1:0:{wrappedEvt.InsertDate}:{wrappedEvt.DomainEvent.EventId}";

            // Assert
            keyeqquals.Should().BeTrue();
        }
Example #28
0
        public void EventWrapper_Should_Be_Equal_To_The_Version_Of_Himself_Seen_As_Object()
        {
            // Arrange, Act
            var wrappedEvt1 = new EventWrapper <int>(new InputAggregateCreated(1));
            var wrappedEvt2 = wrappedEvt1 as object;

            // Assert
            (wrappedEvt1 == wrappedEvt2).Should().BeTrue();
            wrappedEvt1.Equals(wrappedEvt2).Should().BeTrue();
        }
Example #29
0
        public void EventWrapper_Should_Be_Equal_betwween_Two_Instances_representing_The_Same_Thing()
        {
            // Arrange, Act
            var wrappedEvt1 = new EventWrapper <int>(new InputAggregateCreated(1));
            var wrappedEvt2 = new EventWrapper <int>(new InputAggregateCreated(1));

            // Assert
            (wrappedEvt1 == wrappedEvt2).Should().BeFalse();
            wrappedEvt1.Equals(wrappedEvt2).Should().BeFalse();
        }
Example #30
0
 public EventReaction(
     ILogger <EventReaction <TEvent> > logger,
     ISlackApiClient apiClient,
     EventWrapper eventWrapper)
 {
     Logger       = logger;
     _apiClient   = apiClient;
     EventWrapper = eventWrapper;
     Event        = eventWrapper.Event as TEvent;
 }
Example #31
0
        public void Connect()
        {
            _ro = (IServer)
            Activator.GetObject(typeof(IServer),
            "tcp://127.0.0.1:9999/FirstRemote");

            EventWrapper ew = new EventWrapper();
            ew.ParachuteEvent += Temping;

            _ro.AddEvent(ew);
        }
            public static BaseEvent CreateWrapper(BaseEvent original, Action<BaseEvent, bool> passthrough, bool ignoreDelay, KSPEvent kspEvent)
            {
                // Create a new configuration node and fill this node with the original base event with the values
                ConfigNode cn = new ConfigNode();
                original.OnSave(cn);

                // create the wrapper (used solely for its Invoke() method)
                // this class keeps the:
                // * pass through event (leading to the ModuleSPU.InvokeEvent() method)
                // * the original event (button click event)
                // * the ignore delay boolean value (true if the event ignore delay, false otherwise)
                EventWrapper wrapper = new EventWrapper(original, passthrough, ignoreDelay);
                // Create a new event, its main features are:
                // 1. It retains its original base event invokable method: invokable directly through its InvokeOriginalEvent() method [useful for other mods, e.g. kOS]
                // 2. Its new invoke() method which is in this wrapper class and decorated with and new KSPEvent category, namely "skip_control" (meaning we have already seen this event).
                BaseEvent newEvent = new WrappedEvent(original, original.listParent, original.name, wrapper.Invoke, kspEvent);

                // load the original base event values into the new base event
                newEvent.OnLoad(cn);

                return newEvent;
            }
Example #33
0
 public void AddEvent(EventWrapper ew)
 {
     ParachuteEvent = new ParachuteDelegate(ew.ParachuteEventHandler);
 }
Example #34
0
        /// <summary>
        /// Detaches the currently associated instance
        /// </summary>
        public void Detach()
        {
            if (AssociatedObject != null)
            {
                EventWrapper eventHooker = new EventWrapper(this);
                eventHooker.AssociatedObject = AssociatedObject;
                EventInfo eventInfo = GetEventInfo(AssociatedObject.GetType(), EventName);
                Delegate handler = eventHooker.GetEventHandler(eventInfo);

                WindowsRuntimeMarshal.RemoveEventHandler<Delegate>(
                    etr => eventInfo.RemoveMethod.Invoke(AssociatedObject, new object[] { etr }), handler);
            }
        }
Example #35
0
        /// <summary>
        /// Attaches an instance of a DependencyObject to this instance
        /// </summary>
        /// <param name="dependencyObject">The instance to attach</param>
        public void Attach(DependencyObject dependencyObject)
        {
            AssociatedObject = dependencyObject;

            if (!string.IsNullOrEmpty(EventName))
            {
                EventWrapper eventHooker = new EventWrapper(this);
                eventHooker.AssociatedObject = dependencyObject;
                EventInfo eventInfo = GetEventInfo(dependencyObject.GetType(), EventName);

                if (eventInfo != null)
                {
                    Delegate handler = eventHooker.GetEventHandler(eventInfo);

                    WindowsRuntimeMarshal.AddEventHandler<Delegate>(
                        dlg => (EventRegistrationToken)eventInfo.AddMethod.Invoke(dependencyObject, new object[] { dlg }),
                        etr => eventInfo.RemoveMethod.Invoke(dependencyObject, new object[] { etr }), handler);
                }
            }
        }
Example #36
0
 public static IObservable<MouseEventArgs> GetMouseDowns(this Button button)
 {
     var wrapper = new EventWrapper<MouseEventArgs>();
     button.MouseDown += wrapper.Handler;
     return wrapper;
 }