示例#1
0
        private void DiscoverGivens(AggregateSchema type)
        {
            foreach (var givenMethod in GetGivensMethods(type.Type))
            {
                var eventType = givenMethod.GetParameters()[1].ParameterType;
                if (givenMethod.ReturnType != type.StateType)
                {
                    throw new InvalidAggregateSchemaException(type.Type, eventType);
                }

                var isOwnedByAggregate = eventType.Namespace == type.Type.Namespace;

                AggregateEventSchema es = new AggregateEventSchema(eventType, true, isOwnedByAggregate);
                type.Events.Add(es);
                _events.Add(es);
                _eventIndex.TryAdd(eventType, type);
            }
        }