反射工厂怎么弄?详细点~代码贴出来。~谢谢~ 反射工厂怎么弄?详细点~代码贴出来。~谢谢~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 petshop里就是反射工厂呀,看看吧,要是没有百度一个PETSHOP去,然后安装上 看petshop private static readonly string _path = System.Configuration.ConfigurationManager.AppSettings["DAL"]; private static object GetInstance(string CacheKey) { object objType = DataCache.GetCache(CacheKey); if (objType == null) { try { objType = Assembly.Load(DALFactory._path).CreateInstance(CacheKey); DataCache.SetCache(CacheKey, objType); } catch (Exception ex) { throw ex; } } return objType; } public static IAnnounceDAL AnnounceDALInstance() { string CacheKey = DALFactory._path + ".AnnounceDAL"; object objType = DALFactory.GetInstance(CacheKey); return (IAnnounceDAL)objType; } /* * * 公司名称 : *** * 用 户 名 : 枫中玫瑰 * 创建日期 :2009-1-6 16:25 * 程序名称 :AbstractFactory模式 * */using System;using System.Text;using System.Reflection;namespace ConsoleApplication1{ class ChineseCode { public static void Main() { Factory mySalary = Factory.GetInstance(); double bonusValue = mySalary.CalculateBonus(); double taxValue = mySalary.CalculateTax(); double salary = Constant.BASE_SALARY + bonusValue - taxValue; Console.WriteLine(Constant.FACTORYNAME.Substring(0, Constant.FACTORYNAME.Length - 7) + " Salary is:" + salary); Console.ReadKey(); } } #region Abstract Factory模式(抽象工厂) /// <summary> /// 公用的常量 /// </summary> public class Constant { public static double BASE_SALARY = 4000; public static string FACTORYNAME = "ChineseFactory"; //因未使用配置文件, 故此处用于指定工厂 } /// <summary> /// 抽象工厂 /// </summary> public abstract class Factory { public static Factory GetInstance() { Factory instance; string assemblyName = "ConsoleApplication1"; // 使用该语句会造成NullReferencException异常 // string factoryName = Constant.FACTORYNAME.ToString(); string factoryName = assemblyName + "." + Constant.FACTORYNAME.ToString(); //使用反射时, 命名空间应与程序名一致, 否则会造成NullReferencException异常 if (factoryName != "") instance = (Factory)Assembly.Load(assemblyName).CreateInstance(factoryName); else instance = null; return instance; } public abstract double CalculateBonus(); public abstract double CalculateTax(); } /// <summary> /// 中国工厂 /// </summary> public class ChineseFactory : Factory { //计算工资 public override double CalculateBonus() { return Constant.BASE_SALARY * 0.1; } // 计算个人所得税 public override double CalculateTax() { return ((Constant.BASE_SALARY + Constant.BASE_SALARY * 0.1) * 0.4); } } //// <summary> /// 美国工厂 /// </summary> public class AmericanFactory : Factory { //计算工资 public override double CalculateBonus() { return Constant.BASE_SALARY * 0.15; } // 计算个人所得税 public override double CalculateTax() { return (Constant.BASE_SALARY * 0.05 + Constant.BASE_SALARY * 0.25); } } #endregion}代码来自程杰的 大话设计模式 . 如果不懂, 可以下本电子书来看. 高手帮忙~~~~ QQ局域网聊天 学生信息管理系统里的返形调用问题..........急啊 如何实现特定协议的网络交互? 卢彦的《利用XML实现通用WEB报表打印》,谁把代码调通了?急呀! 这段话能不能用linq搞定? 从C# API的学习中,你能得到什么??? 在web.config中配置相对安装路径 请问再window下作java开发,我们需要搭建一个合适我们学习平台,我们都需要安装什么·!谢谢 C#初学者 vs2008,用c#编写的exe程序要在没有装.net framework环境上运行一般都怎么做? 好急好急~想了很久很久了~高手求教~
private static readonly string _path = System.Configuration.ConfigurationManager.AppSettings["DAL"];
private static object GetInstance(string CacheKey)
{
object objType = DataCache.GetCache(CacheKey);
if (objType == null)
{
try
{
objType = Assembly.Load(DALFactory._path).CreateInstance(CacheKey);
DataCache.SetCache(CacheKey, objType);
}
catch (Exception ex)
{
throw ex;
}
}
return objType;
}
public static IAnnounceDAL AnnounceDALInstance()
{
string CacheKey = DALFactory._path + ".AnnounceDAL";
object objType = DALFactory.GetInstance(CacheKey);
return (IAnnounceDAL)objType;
}
*
* 公司名称 : ***
* 用 户 名 : 枫中玫瑰
* 创建日期 :2009-1-6 16:25
* 程序名称 :AbstractFactory模式
*
*/using System;
using System.Text;
using System.Reflection;namespace ConsoleApplication1
{
class ChineseCode
{
public static void Main()
{
Factory mySalary = Factory.GetInstance(); double bonusValue = mySalary.CalculateBonus();
double taxValue = mySalary.CalculateTax();
double salary = Constant.BASE_SALARY + bonusValue - taxValue; Console.WriteLine(Constant.FACTORYNAME.Substring(0, Constant.FACTORYNAME.Length - 7) + " Salary is:" + salary);
Console.ReadKey();
}
} #region Abstract Factory模式(抽象工厂)
/// <summary>
/// 公用的常量
/// </summary>
public class Constant
{
public static double BASE_SALARY = 4000;
public static string FACTORYNAME = "ChineseFactory"; //因未使用配置文件, 故此处用于指定工厂
} /// <summary>
/// 抽象工厂
/// </summary>
public abstract class Factory
{
public static Factory GetInstance()
{
Factory instance;
string assemblyName = "ConsoleApplication1"; // 使用该语句会造成NullReferencException异常
// string factoryName = Constant.FACTORYNAME.ToString();
string factoryName = assemblyName + "." + Constant.FACTORYNAME.ToString(); //使用反射时, 命名空间应与程序名一致, 否则会造成NullReferencException异常
if (factoryName != "")
instance = (Factory)Assembly.Load(assemblyName).CreateInstance(factoryName);
else
instance = null; return instance;
} public abstract double CalculateBonus();
public abstract double CalculateTax();
} /// <summary>
/// 中国工厂
/// </summary>
public class ChineseFactory : Factory
{
//计算工资
public override double CalculateBonus()
{
return Constant.BASE_SALARY * 0.1;
} // 计算个人所得税
public override double CalculateTax()
{
return ((Constant.BASE_SALARY + Constant.BASE_SALARY * 0.1) * 0.4);
}
} //// <summary>
/// 美国工厂
/// </summary>
public class AmericanFactory : Factory
{
//计算工资
public override double CalculateBonus()
{
return Constant.BASE_SALARY * 0.15;
} // 计算个人所得税
public override double CalculateTax()
{
return (Constant.BASE_SALARY * 0.05 + Constant.BASE_SALARY * 0.25);
}
}
#endregion
}
代码来自程杰的 大话设计模式 . 如果不懂, 可以下本电子书来看.