From e68834b31970f87dfb07243e2bce47efd1038a6a Mon Sep 17 00:00:00 2001 From: Simon Gockner Date: Fri, 6 Mar 2020 15:04:39 +0100 Subject: [PATCH] - add GBaseEntryChanged event --- GBase.Api/GBaseEntryChangedEventArgs.cs | 23 ++++++++++++++++++++++ GBase.Api/INotifyGBaseEntryChanged.cs | 16 +++++++++++++++ GBase.Api/NotifyGBaseEntryChanged.cs | 26 +++++++++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 GBase.Api/GBaseEntryChangedEventArgs.cs create mode 100644 GBase.Api/INotifyGBaseEntryChanged.cs create mode 100644 GBase.Api/NotifyGBaseEntryChanged.cs diff --git a/GBase.Api/GBaseEntryChangedEventArgs.cs b/GBase.Api/GBaseEntryChangedEventArgs.cs new file mode 100644 index 0000000..4f37669 --- /dev/null +++ b/GBase.Api/GBaseEntryChangedEventArgs.cs @@ -0,0 +1,23 @@ +// Author: Gockner, Simon +// Created: 2020-03-06 +// Copyright(c) 2020 SimonG. All Rights Reserved. + +using System; + +namespace GBase.Api +{ + /// + /// for the event + /// + public class GBaseEntryChangedEventArgs : EventArgs + { + public GBaseEntryChangedEventArgs(string propertyName, object value) + { + PropertyName = propertyName; + Value = value; + } + + public string PropertyName { get; } + public object Value { get; } + } +} \ No newline at end of file diff --git a/GBase.Api/INotifyGBaseEntryChanged.cs b/GBase.Api/INotifyGBaseEntryChanged.cs new file mode 100644 index 0000000..220f750 --- /dev/null +++ b/GBase.Api/INotifyGBaseEntryChanged.cs @@ -0,0 +1,16 @@ +// Author: Gockner, Simon +// Created: 2020-03-06 +// Copyright(c) 2020 SimonG. All Rights Reserved. + +using System; + +namespace GBase.Api +{ + /// + /// Notify the GBase that an entry has changed + /// + public interface INotifyGBaseEntryChanged + { + static event EventHandler GBaseEntryChanged; + } +} \ No newline at end of file diff --git a/GBase.Api/NotifyGBaseEntryChanged.cs b/GBase.Api/NotifyGBaseEntryChanged.cs new file mode 100644 index 0000000..4b17760 --- /dev/null +++ b/GBase.Api/NotifyGBaseEntryChanged.cs @@ -0,0 +1,26 @@ +// Author: Gockner, Simon +// Created: 2020-03-06 +// Copyright(c) 2020 SimonG. All Rights Reserved. + +using System; + +namespace GBase.Api +{ + /// + /// Notify the GBase that an entry has changed + /// + public abstract class NotifyGBaseEntryChanged : INotifyGBaseEntryChanged + { + public event EventHandler GBaseEntryChanged; + + protected void RaiseGBaseEntryChanged(object sender, string propertyName, object value) + { + GBaseEntryChanged?.BeginInvoke(sender, new GBaseEntryChangedEventArgs(propertyName, value), GBaseEntryChangedCallback, null); + } + + private void GBaseEntryChangedCallback(IAsyncResult asyncResult) + { + GBaseEntryChanged?.EndInvoke(asyncResult); //TestMe: Does this work? Or is there something to be done with the asyncResult + } + } +} \ No newline at end of file