如何使用System.Reflection创建ServiceBase类

时间:2015-02-03 03:58:55

标签: c# service system.reflection

我想在我的项目中创建一个服务安装程序,我的项目中有几个serviceBase类。这是主程序代码:

static class Program
{
    static void Main()
    {
        string[] temp = ConfigurationUtils.ReadSetting("XServices").Split(',');
        string serviceNamespace = ConfigurationUtils.ReadSetting("Services Namespace");
        ServiceBase[] servicesToRun;// = new ServiceBase[temp.Length];

        for (int i = 0; i < temp.Length;i++ )
        {
            Type typeService = Type.GetType(serviceNamespace + "." + temp[i]);
            servicesToRun[i] = (ServiceBase) Activator.CreateInstance(typeService, true);
        }

        ServiceBase.Run(servicesToRun);
    }
}

在这个程序中,我读了我想从app.config创建的类(可以是多个类)。然后我使用Reflection来创建服务(基于app.config)。 我使用app.config来使我想添加的服务可配置。

然后,我可以构建我的项目并安装该服务。但是,当我启动我的服务时,它无法加载我的服务类。 我认为这是因为我刚刚创建的类不能作为我的服务类。

这是我的app.config

<?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <appSettings>
          <add key="log_directory_performancelog" value="C:\Wcms\Modules\XPerformance\Data\" />
          <add key="log_directory_website_monitoring" value="C:\Wcms\Modules\XWebsiteMonitoring\Data\"/>
          <add key="config_path_performance" value="C:\Program Files\Wcms\XLogClient\config.txt" />
          <add key="config_path_website_monitoring" value="C:\Program Files\Wcms\XLogClient\website.monitor.config.txt" />
          <add key="XServices" value="XLogClientPerformance,XLogClientWebsiteMonitoring" />
          <add key="Services Namespace" value="XLog.Client" />
          <add key="ClientSettingsProvider.ServiceUri" value="" />
    </appSettings>
</configuration>

0 个答案:

没有答案