public void UpdateGUI() { RecordableEvent script = (RecordableEvent)target; GUIContent arrayLabel = new GUIContent("Events List"); string[] eventList = GameObject.FindObjectOfType <DataRecorder>().eventsList.ToArray(); script.eventsIndex = EditorGUILayout.Popup(arrayLabel, script.eventsIndex, eventList); script.SelectedEvent = eventList[script.eventsIndex]; EditorUtility.SetDirty(target); }
private void ApplyEvent <TIdentity, TAggregate>( TAggregate aggregate, AggregateConfiguration <TIdentity, TAggregate> configuration, RecordedEventDocument document ) where TAggregate : Aggregate <TIdentity, TAggregate> { var applicators = configuration.Applicators; if (!applicators.TryGetValue(document.EventType, out var applicator)) { throw new InvalidOperationException($"Unexpected recorded event type: {document.EventType}"); } applicator(aggregate, _serializer, document.Data ?? Array.Empty <byte>()); var recordableEvent = new RecordableEvent(document.EventNumber); aggregate.Record(recordableEvent); }
private TAggregate ConstructAggregate <TIdentity, TAggregate>( TIdentity id, AggregateConfiguration <TIdentity, TAggregate> configuration, RecordedEventDocument document ) where TAggregate : Aggregate <TIdentity, TAggregate> { var constructors = configuration.Constructors; if (!constructors.TryGetValue(document.EventType, out var constructor)) { throw new InvalidOperationException($"Unrecognized construction event type: {document.EventType}"); } var aggregate = constructor(id, _serializer, document.Data ?? Array.Empty <byte>()); var recordableEvent = new RecordableEvent(document.EventNumber); aggregate.Record(recordableEvent); return(aggregate); }