工厂管理类
namespace TestSpace { public static class DataTableFactory { /// <summary> /// 键值对容器 /// </summary> private static Dictionary<string, string> dataType = new Dictionary<string, string>(); /// <summary> /// 构造函数 /// </summary> static DataTableFactory() { Add("infos"); } /// <summary> /// 创建对应的dt处理类 /// </summary> /// <param name="typeName">健</param> /// <returns></returns> public static IDataTable CreateData(string typeName) { try { return (IDataTable)Activator.CreateInstance(Type.GetType("TestSpace." + dataType[typeName])); } catch (Exception) { throw; } } /// <summary> /// 添加键值对,添加的值为 健+Data(健:news 值:newsData) ///(健唯一,dt处理类实现需要在 TestSpace 命名空间下) /// </summary> /// <param name="typeName">键</param> /// <param name="type">值</param> public static void Add(string typeName) { Add(typeName, typeName + "Data"); } /// <summary> /// 添加键值对(健唯一,dt处理类实现需要在 TestSpace 命名空间下) /// </summary> /// <param name="typeName">键</param> /// <param name="type">值</param> public static void Add(string typeName, string type) { if (!dataType.ContainsKey(typeName)) dataType.Add(typeName, type); } } }
工厂类
namespace TestSpace { public interface IDataTable { /// <summary> /// 输入完整dt得到需要的dt /// </summary> /// <param name="dt">完整</param> /// <returns></returns> DataTable GetData(DataTable dt, string g_id); } }
具体实现类
namespace TestSpace { /// <summary> /// 信息dt /// </summary> public class infosData : IDataTable { public DataTable GetData(DataTable dt, string ggg) { dt.Columns.Add(new DataColumn("link")); foreach (DataRow dr in dt.Rows) { dr["link"] = dr["id"]; } return dt; } } }
调用方式
IDataTable Idata = DataTableFactory.CreateData(“infos”);
利用Type.GetType("类名")获取相应的类型信息,再有Activator.CreateInstance(Type)创建类,因此,只用传一个对象名,就能动态创建一个对应的对象。
当需要创建没有的对象时,修改的仅仅是在工厂管理类中添加相应的名称,同时在具体实现类中添加相对应名称的方法即可。