Exemple #1
0
        static void Main(string[] args)
        {
            var rootApp = new Program {Log = new ConsoleLog()};

            GenericCommandLineParser.SetUp("host" ,val => Hosts.Add(val));
            GenericCommandLineParser.SetUp("plugin", val => PluginApps.Add(val));
            GenericCommandLineParser.Parse(args);

            _server = new Server(Hosts.First());

            foreach (var host in Hosts.Skip(1))
            {
                _server.AddAddress(host);
            }
    

            var files = Directory.GetFiles(Assembly.GetExecutingAssembly().CodeBase);

            foreach (var file in files)
            {
                try
                {
                    var asm = Assembly.LoadFrom(file);
                    foreach (var type in asm.GetTypes())
                    {
                        if (!type.IsClass || type.IsAbstract ||
                            type.GetCustomAttributes(typeof (PlugInAttribute), false).Length == 0) continue;

                        var info =  (PlugInAttribute)type.GetCustomAttributes(typeof (PlugInAttribute), false)[0];
                        PlugIns.Add(info.Name, type);
                    }
                }
                catch
                {
                }
            }

            foreach (var app in PluginApps)
            {
                var type = PlugIns[app];
                var instance = (IPlugIn) Activator.CreateInstance(type);
                instance.Register(rootApp);
                InstancesByName.Add(app, instance);
            }

            _server.Start();
        }