public CodeExpression TryGenerate(ICodeDomContext context, Type behaviorType)
        {
            if (behaviorType != typeof(ReprocessBehavior))
            {
                return(null);
            }

            ReprocessAttribute attribute = context.HandlerType.GetCustomAttribute <ReprocessAttribute>();

            if (attribute == null)
            {
                return(null);
            }

            double delay = attribute.DelayBeforeReprocess.TotalMilliseconds;

            if (delay > 0)
            {
                return(new CodeObjectCreateExpression(
                           new CodeTypeReference(typeof(ReprocessBehavior)),
                           new CodePrimitiveExpression(attribute.Count),
                           new CodeMethodInvokeExpression(
                               new CodeTypeReferenceExpression(typeof(TimeSpan)),
                               "FromMilliseconds",
                               new CodePrimitiveExpression(delay)
                               )
                           ));
            }

            return(new CodeObjectCreateExpression(
                       new CodeTypeReference(typeof(ReprocessBehavior)),
                       new CodePrimitiveExpression(attribute.Count)
                       ));
        }
Пример #2
0
        public CodeExpression TryGenerate(ICodeDomContext context, Type behaviorType)
        {
            ICodeDomBehaviorGenerator generator;

            if (!storage.TryGetValue(behaviorType, out generator))
            {
                onSearchGenerator.TryExecute(behaviorType, out generator);
            }

            return(generator.TryGenerate(context, behaviorType));
        }
        public CodeExpression TryGenerate(ICodeDomContext context, Type behaviorType)
        {
            if (generator != null)
            {
                CodeExpression result = generator.TryGenerate(context, behaviorType);
                if (result != null)
                {
                    return(result);
                }
            }

            if (behaviorType.GetConstructor(new Type[0]) == null)
            {
                return(null);
            }

            return(new CodeObjectCreateExpression(behaviorType));
        }