/// <inheritdoc/> internal override void TryCreateMonitor(Type type) { // Check if monitors are enabled in production. if (!this.Configuration.IsMonitoringEnabledInInProduction) { return; } lock (this.Monitors) { if (this.Monitors.Any(m => m.GetType() == type)) { // Idempotence: only one monitor per type can exist. return; } } this.Assert(type.IsSubclassOf(typeof(Monitor)), "Type '{0}' is not a subclass of Monitor.", type.FullName); Monitor monitor = (Monitor)Activator.CreateInstance(type); monitor.Initialize(this); monitor.InitializeStateInformation(); lock (this.Monitors) { this.Monitors.Add(monitor); } this.LogWriter.LogCreateMonitor(type.FullName); monitor.GotoStartState(); }
/// <inheritdoc/> internal override void TryCreateMonitor(Type type) { if (this.Monitors.Any(m => m.GetType() == type)) { // Idempotence: only one monitor per type can exist. return; } this.Assert(type.IsSubclassOf(typeof(Monitor)), "Type '{0}' is not a subclass of Monitor.", type.FullName); Monitor monitor = Activator.CreateInstance(type) as Monitor; monitor.Initialize(this); monitor.InitializeStateInformation(); this.LogWriter.LogCreateMonitor(type.FullName); if (this.Configuration.ReportActivityCoverage) { this.ReportActivityCoverageOfMonitor(monitor); } this.Monitors.Add(monitor); monitor.GotoStartState(); }