Ejemplo n.º 1
0
 public AnnotatedHandlerInspector <C> Inspect <C>()
 {
     return(AnnotatedHandlerInspector <C> .CreateInspector <C>(
                parameterResolverFactory,
                handlerDefinition,
                registry
                ));
 }
Ejemplo n.º 2
0
        private static AnnotatedHandlerInspector <C> CreateInspector <C>(
            Type inspectedType,
            IParameterResolverFactory parameterResolverFactory,
            IHandlerDefinition handlerDefinition,
            Dictionary <Type, AnnotatedHandlerInspector <T> > registry)
        {
            if (!registry.ContainsKey(inspectedType))
            {
                registry.Add(inspectedType,
                             AnnotatedHandlerInspector.Initialize <C>(
                                 parameterResolverFactory,
                                 handlerDefinition,
                                 registry)
                             );
            }

            //noinspection unchecked
            return(registry[inspectedType]);
        }
Ejemplo n.º 3
0
        private static AnnotatedHandlerInspector <C> Initialize <C>(
            IParameterResolverFactory parameterResolverFactory,
            IHandlerDefinition handlerDefinition,
            Dictionary <Type, AnnotatedHandlerInspector <C> > registry)
        {
            var inspectedType = typeof(C);
            List <AnnotatedHandlerInspector <T> > parents = new List <AnnotatedHandlerInspector <T> >();

            foreach (Type iFace in inspectedType.GetInterfaces())
            {
                //noinspection unchecked
                parents.Add(
                    CreateInspector(
                        iFace,
                        parameterResolverFactory,
                        handlerDefinition,
                        registry
                        )
                    );
            }

            if (inspectedType.BaseType != null && typeof(object) != inspectedType.BaseType)
            {
                parents.Add(
                    CreateInspector(inspectedType.BaseType,
                                    parameterResolverFactory,
                                    handlerDefinition,
                                    registry)
                    );
            }

            AnnotatedHandlerInspector <T> inspector = new AnnotatedHandlerInspector <T>(
                inspectedType,
                parents,
                parameterResolverFactory,
                handlerDefinition,
                registry
                );

            inspector.InitializeMessageHandlers(parameterResolverFactory, handlerDefinition);
            return(inspector);
        }