Exemple #1
0
        public CommandHandlingSettings(
            [NotNull] ICommandHandlerResolver handlerResolver,
            [NotNull] ResolveCommandType resolveCommandType)
        {
            Condition.Requires(handlerResolver, "handlerResolver").IsNotNull();
            Condition.Requires(resolveCommandType, "ResolveCommandType").IsNotNull();

            _handlerResolver    = handlerResolver;
            _resolveCommandType = resolveCommandType;
        }
Exemple #2
0
        public CommandHandlingSettings(
            [NotNull] ICommandHandlerResolver handlerResolver,
            [NotNull] ResolveCommandType resolveCommandType)
        {
            Ensure.That(handlerResolver, "handlerResolver").IsNotNull();
            Ensure.That(resolveCommandType, "ResolveCommandType").IsNotNull();

            _handlerResolver    = handlerResolver;
            _resolveCommandType = resolveCommandType;
            _deserializeCommand = CatchDeserializationExceptions(
                (commandReader, type) =>
            {
                var body = commandReader.ReadToEnd();     // Will cause LOH problems if command json > 85KB
                return(SimpleJson.DeserializeObject(body, type, CommandClient.JsonSerializerStrategy));
            });
        }
        public CommandHandlingSettings(
            [NotNull] ICommandHandlerResolver handlerResolver,
            [NotNull] ResolveCommandType resolveCommandType)
        {
            Ensure.That(handlerResolver, "handlerResolver").IsNotNull();
            Ensure.That(resolveCommandType, "ResolveCommandType").IsNotNull();

            _handlerResolver = handlerResolver;
            _resolveCommandType = resolveCommandType;
            _deserializeCommand = CatchDeserializationExceptions(
                (commandReader, type) =>
                {
                    var body = commandReader.ReadToEnd(); // Will cause LOH problems if command json > 85KB
                    return SimpleJson.DeserializeObject(body, type, CommandClient.JsonSerializerStrategy);
                });
        }
Exemple #4
0
        static void Main()
        {
            var resolver = new CommandHandlerResolver(new CommandModule());

            // 1. Create a map to resolve types from a key.
            // This could of course be done with reflection + conventions.
            // For the sake of example, we're going to be explict.
            var commandMap = new[]
            {
                typeof(CommandVersioning.V1.Command),
                typeof(CommandVersioning.V2.Command),
            }.ToDictionary(t => t.Name.ToLowerInvariant(), t => t);

            var resolveCommandType = new ResolveCommandType((typeName, version) =>
            {
                // 2. In this example, we're not handling unversioned commands. You
                // may of course handle them.
                if (version == null)
                {
                    return(null); // 3. Return null if the command type can't be resolved.
                }

                // 4. Here we're just converting the typeName to a key that matches our
                // convetion.
                var typeNameSegments = typeName.Split('.').ToList();                // my.type.name -> { my, type, name }
                typeNameSegments.Insert(typeNameSegments.Count - 1, "v" + version); // { my, type, name } -> { my, type, vX, name }
                typeName = string.Join(".", typeNameSegments);                      // { my, type, vX, name } -> my.type.vX.name

                Type commandType;
                commandMap.TryGetValue(typeName, out commandType);
                return(commandType);
            });

            // 5. CommandHandlingSettings has a contructor overload to pass in the command type resolver.
            var settings = new CommandHandlingSettings(resolver, resolveCommandType);
        }