动态生成类型问题,.net 2003

blastball 2003-05-27 01:01:02
Assembly a = Assembly.LoadFrom("Location and name of my.dll");
MyForm f = (MyForm) a.CreateInstance("MyNameSpace.MyForm"); <--
This line causes an invalid cast exception.
f.Show();
...全文
25 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
blastball 2003-05-27
  • 打赏
  • 举报
回复
coollzh(良子) :
可惜这方法只是调接口,我希望得到对象。
blastball 2003-05-27
  • 打赏
  • 举报
回复
一定要共享的Assembly才行?我发现内存中f已经存在且正确,就是强制转换错了。
coollzh 2003-05-27
  • 打赏
  • 举报
回复
检查一些a的值,是否为null

实在不行,这样
Assembly SampleAssembly;
SampleAssembly = Assembly.LoadFrom("c:\\Sample.Assembly.dll");
// Obtain a reference to a method known to exist in assembly.
MethodInfo Method = SampleAssembly.GetTypes()[0].GetMethod("Method1");
// Obtain a reference to the parameters collection of the MethodInfo instance.
ParameterInfo[] Params = Method.GetParameters();
// Display information about method parameters.
// Param = sParam1
// Type = System.String
// Position = 0
// Optional=False
foreach (ParameterInfo Param in Params){
Console.WriteLine("Param=" + Param.Name.ToString());
Console.WriteLine(" Type=" + Param.ParameterType.ToString());
Console.WriteLine(" Position=" + Param.Position.ToString());
Console.WriteLine(" Optional=" + Param.IsOptional.ToString());
}
lostinetdotcom 2003-05-27
  • 打赏
  • 举报
回复
MyForm f 中的 MyForm是 MyNameSpace.MyForm ?
他们所属的Assembly是同一个?

建议:
发布一个共享的Assembly
里面有:MyFormBase
然后MyNameSpace.MyForm继承MyFormBase
程序写起来会是这样:

MyFormBase f=(MyFormBase) a.CreateInstance("MyNameSpace.MyForm");
blastball 2003-05-27
  • 打赏
  • 举报
回复
没人知道码?

110,536

社区成员

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

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

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