Exemplo n.º 1
0
        /// <summary>
        /// 리소스에 저장된 환경설정 파일을 로드하여 초기화합니다.
        /// 참고 : http://www.primordialcode.com/blog/post/castle-windsor-enabling-xml-configuration-files-silverlight
        /// </summary>
        /// <param name="assembly">리소스를 소유한 Assembly</param>
        /// <param name="resourceFilename">리소스 파일 명</param>
        public static void InitializeFromResource(Assembly assembly, string resourceFilename)
        {
            // 실버라이트에서는 XLinq 만을 지원하여, XmlInterpreter 방식이 지원되지 않는데,
            // 위의 사이트에서 XLinq 방식으로 변환한 것을 NSoft.NFramework for Silverlight 에 적용시켰습니다.

            if (IsDebugEnabled)
            {
                log.Debug("어셈블리의 리소스파일로부터 IoC 환경설정 정보를 얻어 환경설정을 수행합니다. assembly=[{0}], resourceFilename=[{1}]",
                          assembly, resourceFilename);
            }
            try {
                using (var stream = ResourceTool.GetEmbeddedResourceFile(assembly ?? Assembly.GetExecutingAssembly(), resourceFilename)) {
                    var xmlText = stream.ToText();

                    var container = new WindsorContainer(new XmlInterpreter(new StaticContentResource(xmlText)));
                    Initialize(container);
                }
            }
            catch (Exception ex) {
                if (log.IsErrorEnabled)
                {
                    log.ErrorException("리소스 파일로부터 IoC 설정하는데 실패했습니다. resourceFilename=" + resourceFilename, ex);
                }
                throw;
            }
        }