프로젝트

일반

사용자정보

통계
| 브랜치(Branch): | 개정판:

markus / ConvertService / ServiceBase / Markus.Service.Convert / Plugin.cs @ 7b095cc3

이력 | 보기 | 이력해설 | 다운로드 (1.72 KB)

1
using Markus.Service.Extensions;
2
using Markus.Service.Helper;
3
using System;
4
using System.Collections.Generic;
5
using System.Linq;
6
using System.Text;
7
using System.Threading.Tasks;
8
using Markus.Service.Convert.Plugin;
9
using log4net;
10

    
11
namespace Markus.Service
12
{
13
    public static class PluginService
14
    {
15
        private const string ConfigFileName = "Plugin.ini";
16
        private const string BasePath = "Plugin";
17

    
18
        public static bool Run(string ConvertID)
19
        {
20
            bool result = false;
21

    
22
            var pluginPath = System.IO.Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, BasePath);
23
            var plugins = GenericPluginLoader<IPlugin>.LoadPlugins(pluginPath);
24
            var config = ConfigHelper.AppConfig(ConfigFileName);
25

    
26
            if (plugins != null)
27
            {
28
                foreach (var item in plugins)
29
                {
30
                    Dictionary<string, object> parameters = new Dictionary<string, object>();
31

    
32
                    var sections = config.Sections.Where(x => x.SectionName == item.Name);
33

    
34
                    if (sections.Count() > 0)
35
                    {
36
                        foreach (var param in sections.First().Keys)
37
                        {
38
                            parameters.Add(param.Name, param.Content);
39
                        }
40
                    }
41

    
42
                    var pluginResult = item.Do(ConvertID, parameters);
43

    
44
                    if (!pluginResult)
45
                    {
46

    
47
                       throw new Exception($"Markus.Service.ConvertProcess Error ConvertId : {ConvertID} PlugIn Error : ", new Exception(item.Exception.ToString()));
48
                    }
49
                }
50
            }
51

    
52
            return result;
53
        }
54

    
55
    }
56
}
클립보드 이미지 추가 (최대 크기: 500 MB)