C# 플러그인 구현(하나)xml 설정 읽기

3048 단어 C#플러그인 개발
플러그인식 프레임워크의 장점에 대해 본고는 더 이상 군말하지 않고 본고의 토론 범위에 있지 않다. 본고는 C#플러그인식의 실현 절차만 소개한다.
이 문서에서 설명하는 플러그인 방식의 기본 절차는 다음과 같습니다.
1. 플러그인 구성
2. 구성에서 플러그인 읽기
3. 약속한 인터페이스에 따라 플러그인 불러오기
설정 플러그인은 주로 c#에서 동적 라이브러리는 일반적으로 dll을 접미사로 사용하지만 다른 플러그인이 아닌 동적 라이브러리는 불러올 때 시간이 걸릴 수 있기 때문에 설정 방식을 사용합니다.여기서 구성 파일은 다음과 같습니다.

MainPage.dll  .png1    
    trueSysManager.dll    .png1        
    trueYPGL.dll    .png1        
    trueMZSF.dll    .png1        
    trueTJCX.dll    .png1        
    trueJCZL.dll    .png1        
    trueYGXXGL.dll    .png1            
    true

플러그인 구성의 키 코드를 읽으려면 다음과 같이 하십시오.
private static void GetPlugins()
        {
            List stringPaths = new List();
            List stringTips = new List();
            List stringVisibles = new List();

            System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
            string xmlfile = System.Windows.Forms.Application.StartupPath + "\\cfg\\default.xml";
            if (!System.IO.File.Exists(xmlfile))
            {
                System.Windows.Forms.MessageBox.Show("       ,       " + System.Windows.Forms.Application.StartupPath + "\\Config\\menu.xml");
                System.Environment.Exit(0);
            }

            xmlDoc.Load(xmlfile);
            System.Xml.XmlNodeList nodePlugins = xmlDoc.SelectSingleNode("plugins").ChildNodes;//  plugins  
            foreach (System.Xml.XmlNode plugin in nodePlugins)//     plugin
            {
                System.Xml.XmlElement attributes = (System.Xml.XmlElement)plugin;
                foreach (System.Xml.XmlNode attribute in attributes)//   plugin  
                {
                    if (attribute.Name.ToUpper() == "NAME")
                    {
                        stringPaths.Add(System.Windows.Forms.Application.StartupPath + "\\plugins\\" + attribute.InnerText);
                    }
                    if (attribute.Name.ToUpper() == "IMGPATH")
                    {                        
                        Image img = System.Drawing.Image.FromFile(System.Windows.Forms.Application.StartupPath + "\\img\\" + attribute.InnerText,true);
                        Pub.g_ImageList.Images.Add(attribute.InnerText, img);
                    }
                    if (attribute.Name.ToUpper() == "TIP")
                    {
                        stringTips.Add(attribute.InnerText);
                    }
                    if (attribute.Name.ToUpper() == "VISIBLE")
                    {
                        stringVisibles.Add(attribute.InnerText);
                    }
                }
            }

            PluginsInfo.m_PluginPaths = stringPaths.ToArray();
            PluginsInfo.m_PluginTips = stringTips.ToArray();
            PluginsInfo.m_stringVisibles = stringVisibles.ToArray();
        }

여기서 PluginsInfo는 전역 변수로서 코드의 읽기, 보존에 영향을 주지 않습니다.마지막으로 전체 공사 원본을 첨부할 것이다.

좋은 웹페이지 즐겨찾기