Assembly.CreateInstance的问题

AZ114614206 2010-03-29 12:55:29
Assembly t = Assembly.Load("HelloWorld");//加载HelloWorld.dll

HelloWorld.dll里命名空间Webtest,有接口interface1,和类ReflectTest(继承并实现了接口interface1)

Webtest.interface1 obj1 = (Webtest.interface1)t.CreateInstance("Webtest.ReflectTest");
这里提示说“无法将类型为“Webtest.ReflectTest”的对象强制转换为类型“Webtest.interface1”。

Webtest.ReflectTest obj2 = (Webtest.ReflectTest)t.CreateInstance("Webtest.ReflectTest");
这里提示说“无法将类型为“Webtest.ReflectTest”的对象强制转换为类型“Webtest.ReflectTest”。

请大虾们指教
...全文
140 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwx6312388 2010-03-29
  • 打赏
  • 举报
回复
Webtest.interface1 obj1 = (Webtest.interface1)t.CreateInstance("Webtest.ReflectTest");
动态加载的程序集在编译时不知道有Webtest.interface1接口,当然会出错
wwx6312388 2010-03-29
  • 打赏
  • 举报
回复
不是这么用的,应该这样用
Assembly t = Assembly.Load("HelloWorld");
Type test= t.GetType("Webtest.ReflectTest"); //获取类型
//动态生成对象
object obj=Activator.CreateInstance(text);
//然后可以获取方法
MethodInfo m=test.GetMethod("方法名");
//调用方法
m.Invoke(obj,null);
AZ114614206 2010-03-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wwq0123 的回复:]
Assembly t = Assembly.Load("Webtest")试试
[/Quote]

提示
未能加载文件或程序集“Webtest”或它的某一个依赖项。系统找不到指定的文件。
AZ114614206 2010-03-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yujuanmin 的回复:]
我在visual studio 2010上试了下,可以编译通过亚。
[/Quote]

我用的是2008。
liuzihe1979 2010-03-29
  • 打赏
  • 举报
回复
好,受教了
yujuanmin 2010-03-29
  • 打赏
  • 举报
回复
我在visual studio 2010上试了下,可以编译通过亚。
wuyq11 2010-03-29
  • 打赏
  • 举报
回复
namespace TestAssembly
{
public class Class1
{
}
}

protected void Page_Load(object sender, EventArgs e)
{
Class1 c=(Class1)(Assembly.Load("TestAssembly").CreateInstance("TestAssembly.Class1"));
}
wwq0123 2010-03-29
  • 打赏
  • 举报
回复
Assembly t = Assembly.Load("Webtest")试试
Baesky 2010-03-29
  • 打赏
  • 举报
回复
Type intface1 = t.gettype("interface1");
intface1 obj1 = (intface1)t.CreateInstance("Webtest.ReflectTest");

try it~

110,536

社区成员

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

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

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