Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }