DotNet Capacity Factory DLL 캐시

appconfig 프로필을 통해 공장 설계 모델 구현
using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Reflection;

namespace ConsoleApplication1
{
    class TestFactoryFromAppConfig
    {
        /// <summary>
        ///         DLL  
        /// </summary>
        private static Dictionary<string, Assembly> _FactoryDllCach = new Dictionary<string, Assembly>();
        public static void Main() 
        {
            TestFactoryFromAppConfig tfac = new TestFactoryFromAppConfig();
            Interface ife = (Interface)tfac.GetFactoryClass("SamTestForFactory");
            ife.SayHello();
            Console.Read();
        }

    private object GetFactoryClass(string p)
    {
 	     /// <summary>
        ///           
        /// </summary>
            object actionObj = null;
            string vValue = ConfigurationManager.AppSettings[p];
            string[] typeList = vValue.Split(',');
            try
            {
                System.Reflection.Assembly dll = null;
                if (_FactoryDllCach.ContainsKey(p))
                {
                    dll = _FactoryDllCach[p];
                }
                else
                {
                    dll = Assembly.Load(typeList[1].Trim());
                    _FactoryDllCach.Add(p, dll);
                }
                actionObj = dll.CreateInstance(typeList[0].Trim());
            }
            catch (Exception ex)
            {
                throw new Exception("       !", ex);
            }
            return actionObj;
        }
    }
}

플랜트 구현 클래스 코드는 인터페이스의 특정 방법을 구현한 것입니다.
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1.ChildFolder
{
    class Child : Interface
    {
        #region Interface   

        public void SayHello()
        {
            string teacher = "teacher";
            Console.WriteLine("hellow {0}", teacher);
        }

        #endregion
    }
}

인터페이스 정의 SayHello 메서드:
4
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    public interface Interface
    {
        void SayHello();
    }
}
appconfig 프로필에서 키 값 쌍을 정의합니다.
ConfigurationManager.AppSettings 메서드가 값을 가져옵니다.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>


  <appSettings>

    
    <add key="SamTestForFactory" value="ConsoleApplication1.ChildFolder.Child,ConsoleApplication1"/>
  
  </appSettings>

</configuration>

프로그램 집합을 캐시에 넣고 다음에 같은 키로 접근하면 프로그램 집합을 다시 불러올 필요가 없고 캐시에서 읽으면 됩니다.

좋은 웹페이지 즐겨찾기