public MainViewModel() { var localIoc = new AutofacServiceLocator(new Bootstrapper().BootStrap()); var addShapeCommandFactory = localIoc.GetInstance <Func <ObservableCollection <ShapeViewModel>, AddShapeCommand> >(); var removeShapeCommandFactory = localIoc.GetInstance <Func <ObservableCollection <ShapeViewModel>, RemoveShapeCommand> >(); AddShapeCommand = addShapeCommandFactory(Shapes); RemoveShapeCommand = removeShapeCommandFactory(Shapes); }
public object GetInstance(Type serviceType) { return(_csl.GetInstance(serviceType)); }
private void Form1_Load(object sender, EventArgs e) { var logView = new LogViewListener(WriteTraceEvent); Trace.Listeners.Add(logView); Trace.AutoFlush = true; Configuration exeConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); ConfigurationSection diagnosticsSection = exeConfiguration.GetSection("system.diagnostics"); ConfigurationElementCollection tracesources = diagnosticsSection.ElementInformation.Properties["sources"].Value as ConfigurationElementCollection; List <KeyValuePair <string, IProbeMonitor> > probeMonitors = new List <KeyValuePair <string, IProbeMonitor> >(); foreach (TraceListener traceListener in Trace.Listeners) { IProbeMonitor probeMonitor = traceListener as IProbeMonitor; if (probeMonitor != null) { Trace.WriteLine("Configures ProbeMonitor: " + traceListener.Name); probeMonitors.Add(new KeyValuePair <string, IProbeMonitor>(traceListener.Name, probeMonitor)); } } var builder = new Autofac.Builder.ContainerBuilder(); builder.RegisterCollection <IProbe>().As <IEnumerable <IProbe> >(); string path = System.IO.Path.GetDirectoryName(Application.ExecutablePath); var dynamicProbes = ProbeTypeLoader.LoadList(typeof(IProbe), path); dynamicProbes.AddRange(ProbeTypeLoader.LoadList(typeof(IProbe), System.IO.Path.Combine(path, "Probes"))); foreach (var probeType in dynamicProbes) { builder.Register(probeType).As <IProbe>().ExternallyOwned().FactoryScoped().Named(probeType.FullName).MemberOf <IEnumerable <IProbe> >(); //builder.Register<PerfMonProbe>().As<IProbe>().ExternallyOwned().FactoryScoped().Named(typeof(PerfMonProbe).FullName).MemberOf<IEnumerable<IProbe>>(); //builder.Register<EventLogProbe>().As<IProbe>().ExternallyOwned().FactoryScoped().Named(typeof(EventLogProbe).FullName).MemberOf<IEnumerable<IProbe>>(); //builder.Register<PingProbe>().As<IProbe>().ExternallyOwned().FactoryScoped().Named(typeof(PingProbe).FullName).MemberOf<IEnumerable<IProbe>>(); } var container = builder.Build(); Microsoft.Practices.ServiceLocation.IServiceLocator locator = new AutofacServiceLocator(container); foreach (ConfigurationElement tracesource in tracesources) { string name = tracesource.ElementInformation.Properties["name"].Value.ToString(); Trace.WriteLine("Configures TraceSource: " + name); if (name.IndexOf('.') != -1) { string logicalName = name.Substring(0, name.IndexOf('.')); string typeName = name.Substring(name.IndexOf('.') + 1); IProbe probe = locator.GetInstance <IProbe>("SnakeEyes." + typeName); if (probe == null) { Trace.WriteLine("Unknown Probe Type: " + typeName); continue; } TraceSource probeSource = probe.ConfigureProbe(name); probeSource.Listeners.Add(logView); foreach (KeyValuePair <string, IProbeMonitor> probeMonitor in probeMonitors) { probeMonitor.Value.RegisterProbe(probeSource); } _probes.AddProbe(DateTime.MinValue, probe); } } if (_probes.Count == 0) { Trace.WriteLine("SnakeEyes have no probes to poll"); return; } Trace.WriteLine("SnakeEyes starts monitoring..."); foreach (KeyValuePair <string, IProbeMonitor> probeMonitor in probeMonitors) { probeMonitor.Value.StartMonitor(probeMonitor.Key); } _probeTimer.Enabled = true; }