当前位置:编程学习 > C#/ASP.NET >>

C# 静态工厂利用反射机制动态构建配置文件中所配置的类的对象

在产品项目进行中我们难免会遇到因为项目服务对象不同,实现也不同的功能。

这样每次修改后重新编译整个解决方案后更新耗时耗力。

其实使用静态工厂,我们可以很容易的引入额外的dll来动态的配置这些功能的实现

 

首先下面是所有工厂的基类,其中包含了一个读取配置文件的方法,和一个生成对象的静态方法

 

\代码
 
  /// <summary>
    /// 所有工厂基类
    ///<author name="Jan.David"></author>
    ///<![CDATA[2010-11-05]]>
    /// </summary>
public abstract class AbstractFactory
{
/// <summary>
/// 读取设置文件内的值
/// </summary>
/// <param name="parentNode"></param>
/// <param name="key"></param>
/// <returns></returns>
public static string ReadSettring(string parentNode,string key)
{
string FilePath = AppDomain.CurrentDomain.BaseDirectory;//项目路径
//新建xml文档对象
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
//读取文档
doc.Load(FilePath + "/Setting.xml");
//获取根节点
System.Xml.XmlNodeList Root = doc.FirstChild.NextSibling.ChildNodes;

System.Xml.XmlNodeList nodes = default(System.Xml.XmlNodeList);
foreach (System.Xml.XmlNode node in Root)
{
if (node.Name.ToLower() == parentNode.ToLower())
{
nodes = node.ChildNodes;
break;
}
}
if (nodes != null && nodes.Count > 0)
{
foreach (System.Xml.XmlNode node in nodes)
{
if (node.Attributes["name"].Value.ToLower() == key.ToLower())
{
return node.Attributes["value"].Value;
}
}
}
return null;
}
/// <summary>
/// 实例化一个对象
/// </summary>
/// <typeparam name="T">要实例化的类型</typeparam>补充:软件开发 , C# ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,