Пример #1
0
        public async Task AttachPreBuiltTypes(GenerationRules rules, Assembly assembly, IServiceProvider services)
        {
            var typeSet = await TypeRepository.ForAssembly(assembly);

            var handlerTypes = typeSet.ClosedTypes.Concretes.Where(x => x.CanBeCastTo <RouteHandler>()).ToArray();

            var container = (IContainer)services;

            foreach (var chain in _chains)
            {
                chain.AttachPreBuiltHandler(rules, container, handlerTypes);
            }
        }
Пример #2
0
        /// <summary>
        ///     Programmatically directs Marten to map all the subclasses of <cref name="T" /> to a hierarchy of types.
        ///     <c>Unadvised in projects with many types.</c>
        /// </summary>
        /// <returns></returns>
        public void AddHierarchy()
        {
            var baseType = _parent.DocumentType;


            var assembly = baseType.GetTypeInfo().Assembly;

            var types            = TypeRepository.ForAssembly(assembly).GetAwaiter().GetResult();
            var allSubclassTypes = types.ClosedTypes.Concretes
                                   .Where(x => x.CanBeCastTo(baseType));

            foreach (var subclassType in allSubclassTypes)
            {
                Add(subclassType, null);
            }
        }
Пример #3
0
        async Task IGeneratesCode.AttachPreBuiltTypes(GenerationRules rules, Assembly assembly, IServiceProvider services)
        {
            var typeSet = await TypeRepository.ForAssembly(assembly);

            var handlerTypes = typeSet.ClosedTypes.Concretes.Where(x => x.CanBeCastTo <MessageHandler>()).ToArray();

            var container = (IContainer)services;

            foreach (var chain in Chains)
            {
                var handler = chain.AttachPreBuiltHandler(rules, container, handlerTypes);
                if (handler != null)
                {
                    _handlers = _handlers.Update(chain.MessageType, handler);
                }
            }
        }