C#反射创建对象

程序由人 2009-03-21 11:12:26
public sealed class DataAccess
{
private static readonly string path = System.Configuration.ConfigurationSettings.AppSettings["DAL"];

/// <summary>
/// 创建对象或从缓存获取
/// </summary>
public static object CreateObject(string path, string CacheKey)
{
object objType = DataCache.GetCache(CacheKey);//从缓存读取
if(objType == null)
{
try
{
objType = Assembly.Load(path).CreateInstance(CacheKey);//反射创建
DataCache.SetCache(CacheKey, objType);//写入缓存
}
catch
{ }
}
return objType;
}
object objType = DataCache.GetCache(CacheKey);//从缓存读取
//问题在这里:这句计算机根本不去执行,不知道为什么,调试了N次objType始终是NULL,我的path和CacheKey都不是空的。为什么总是NULL?
...全文
172 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序由人 2009-03-22
  • 打赏
  • 举报
回复
值不能为空。
参数名: value
程序由人 2009-03-22
  • 打赏
  • 举报
回复
file:///C:/Documents%20and%20Settings/Administrator/桌面/Magical%20Snap%20-%202009.03.22%2000.33%20-%20007.png
天乐 2009-03-22
  • 打赏
  • 举报
回复
path或CacheKey有误,请catch(Exception bug)把异常信息输出来看看

不明白再贴出来
bjutlingmu 2009-03-22
  • 打赏
  • 举报
回复
ding
delphi_new 2009-03-22
  • 打赏
  • 举报
回复

object objType = DataCache.GetCache(CacheKey);//从缓存读取

那就是DataCache.GetCache(CacheKey);这句话有问题咯,多调试下就知道原因了
mathieuxiao 2009-03-22
  • 打赏
  • 举报
回复
然后还需要你在当前项目中引用DAL那个类库
mathieuxiao 2009-03-22
  • 打赏
  • 举报
回复
你的path和CacheKey是否都是全路径?
你可以先试试
 object obj = Assembly.Load(path)
看看程序集是否加载成功(obj如果不为空就说明成功了),然后再去实例化对象
SealedLove 2009-03-21
  • 打赏
  • 举报
回复
UP

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧