using System; using System.Reflection; namespace Cn.CodeMarks.Builder { /// <summary> /// Builder接口 /// </summary> public interface IBuilder { string GetCode(); } /// <summary> /// Builder具体实现 /// </summary> public class BuilderDAL : IBuilder { #region IBuilder 成员 public string GetCode() { return "builderDAL"; } #endregion } /// <summary> /// 生成工厂 /// </summary> public class BuilderFactory { public static IBuilder CreateDALBuilder() { IBuilder ret = null; try { string path = System.Configuration.ConfigurationManager.AppSettings["DAL"].ToString(); string typeName = System.Configuration.ConfigurationManager.AppSettings["type"].ToString(); ret = Assembly.LoadFile(path).CreateInstance(typeName) as IBuilder; } catch (Exception ex) { throw new Exception(ex.Message); } return ret; } } /// <summary> /// Builder测试类 /// </summary> public class TestIBuilder { public static void Main(string[] args) { try { IBuilder objBuilder = BuilderFactory.CreateDALBuilder(); if (objBuilder != null) { Console.WriteLine(objBuilder.GetCode()); } } catch (Exception ex) { Console.WriteLine(ex.Message.ToString()); } } } }