コード例 #1
0
        /// <summary>
        /// Rewrites all members in the document.
        /// </summary>
        public SyntaxNode Process(SyntaxNode syntax, ProcessorContext context)
        {
            var virtualEvents = new HashSet <string>();
            var semantic      = context.Compilation.GetSemanticModel(syntax.SyntaxTree);

            if (semantic != null)
            {
                var events = new EventVisitor();
                events.Visit(syntax);

                foreach (var symbol in events.Types.SelectMany(type => semantic
                                                               .LookupNamespacesAndTypes(type.Span.Start, name: type.Identifier.ValueText)
                                                               .OfType <INamedTypeSymbol>()).Where(x => x != null))
                {
                    var baseType = symbol.BaseType;
                    while (baseType != null)
                    {
                        foreach (var e in baseType.GetMembers().OfType <IEventSymbol>().Where(e => e.IsVirtual))
                        {
                            virtualEvents.Add(e.Name);
                        }

                        baseType = baseType.BaseType;
                    }
                }
            }

            return(syntax = new CSharpRewriteVisitor(virtualEvents).Visit(syntax));
        }
コード例 #2
0
        /// <summary>
        /// Creates a new instance of <see cref="SimulationRunner{TSimulationEnvironment}"/>.
        /// </summary>
        /// <param name="environment">
        /// The simulation environment.
        /// </param>
        /// <exception cref="System.ArgumentNullException">
        /// Thrown when <paramref name="environment"/> is <see langword="null"/>.
        /// </exception>
        public SimulationRunner(TSimulationEnvironment environment)
        {
            Guard.IsNotNull(environment, "environment");

            _environment = environment;
            _visitor     = new EventVisitor(this);
            _eventQueue  = new PriorityQueue <ScheduledEventEnumerator>();
        }
コード例 #3
0
        private static void VisitEvents(Thing thing, IEnumerable <IInterceptorFactory> factories)
        {
            var intercepts = factories
                             .Select(x => x.CreatEventIntercept())
                             .ToArray();

            EventVisitor.Visit(intercepts, thing);
        }
コード例 #4
0
        public ActionResult Details(int id)
        {
            var events        = db.Events.FirstOrDefault(x => x.Id == id);
            var visitors      = db.Visitors.Where(x => x.EventId == id && x.ConfirmedEmail).ToList();
            var eventVisitors = new EventVisitor()
            {
                Events = events, Visitors = visitors
            };

            return(View(eventVisitors));
        }
コード例 #5
0
 /// <summary>
 /// Accept a visit by the given visitor.
 /// </summary>
 public override TResult Accept <TResult, TData>(EventVisitor <TResult, TData> visitor, TData data)
 {
     return(visitor.Visit(this, data));
 }