关于反射的问题

active99 2010-11-15 05:40:13
想不通过加载程序集进行反射创建对象,主要是想速度快一些。
我用:
Type type2 = Type.GetType("System.Windows.Forms.Form");
为什么获取的值是空的呢?

而获取system名称空间下的类都可以得到,如:
Type type = Type.GetType("System.Exception");

而名称空间都引用了。如何解决这个问题?
...全文
126 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
linixstm32 2012-09-28
  • 打赏
  • 举报
回复
多谢2楼,正想查下.dll路径的获取方法
active99 2010-11-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sp1234 的回复:]
以测试为准,不要随便对理论进行联想。
[/Quote]

我觉得你发言也不要随便对理论进行否定。
我的意思很明显,就是我的程序已经加载了程序集,如果你要再去加载一次,还期望比直接用已经加载好的程序集速度快吗?你可以去测试,我觉得我没有必要去做这个测试。
kongdelu2008 2010-11-15
  • 打赏
  • 举报
回复
内部编码实现不同,谁让.NET不开源来,要不然也不会有这么多的奇怪问题。
  • 打赏
  • 举报
回复
以测试为准,不要随便对理论进行联想。
  • 打赏
  • 举报
回复
[Quote=引用楼主 active99 的回复:]
想不通过加载程序集进行反射创建对象,主要是想速度快一些。
[/Quote]

就算你获得了反射对象,你测试过这样就速度快了?这个所谓“快了一些”如果价值1毛钱,我可以借给你1毛钱然后你还是用正确、可用的方式,做点有用的开发。
active99 2010-11-15
  • 打赏
  • 举报
回复
不行啊,我也觉得奇怪。只能创建system名称空间下的类。
flyerwing 2010-11-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyazhe 的回复:]
你是不是没有添加System.Windows.Forms.dll的文件引用?
[/Quote]
应该是可以的吧.
active99 2010-11-15
  • 打赏
  • 举报
回复
添加了System.Windows.Forms.Form.dll的引用。
兔子-顾问 2010-11-15
  • 打赏
  • 举报
回复
try

using System;
using System.Reflection;

namespace CSharpConsole05
{
class Program
{
static void Main(string[] args)
{
//找路径
string dllPath = System.IO.Path.GetDirectoryName(AppDomain.CurrentDomain.GetAssemblies()[0].Location);
//读文件
byte[] formdll = System.IO.File.ReadAllBytes(dllPath + @"\System.Windows.Forms.dll");
//加载
Assembly asm = Assembly.Load(formdll);
//反射
Type type2 = asm.GetType("System.Windows.Forms.Form");
Console.WriteLine(type2.Name);
Console.ReadKey();
}
}
}
兔子-顾问 2010-11-15
  • 打赏
  • 举报
回复
你是不是没有添加System.Windows.Forms.dll的文件引用?

110,536

社区成员

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

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

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