Пример #1
0
        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);
        }
Пример #2
0
 public object GetInstance(Type serviceType)
 {
     return(_csl.GetInstance(serviceType));
 }
Пример #3
0
        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;
        }