首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用调用另一个静态类方法的构造函数动态创建类

使用调用另一个静态类方法的构造函数动态创建类
EN

Stack Overflow用户
提问于 2012-05-29 14:02:15
回答 1查看 514关注 0票数 1

我正在尝试动态创建类CommandDrawing的实例,该实例位于另一个程序集中。CommandDrawing类默认构造函数包含对静态方法的调用,这些方法位于同一个汇编语言中的另一个类中。动态类是创建的,但是当它尝试在构造函数中运行静态方法调用时,它会出现异常:

调用的目标引发了异常。TypeInitializeException`The `类型初始化器抛出异常。

我必须在两个类中加载吗?如果需要,如何加载?

我使用下面的代码创建以前成功使用过的类,并在静态方法调用不存在时工作:

代码语言:javascript
复制
Assembly assemblyCommandDrawing = System.Reflection.Assembly.LoadFile(@"D:\ManifoldInspections.dll");
Type typeCommandDrawing = assemblyCommandDrawing.GetType("InspectionDetails.CommandDrawing");
object cmd = System.Activator.CreateInstance (typeCommandDrawing, new object[] { drawing, DrawingBaseDetail });

CommandDrawing默认构造函数如下所示-注意,UtilityMapControl.SetupDrawingTableTemplate是我正在调用的静态方法,它位于这里:

代码语言:javascript
复制
public CommandDrawing(Manifold.Interop.Drawing p_Drawing, InspectionDetails.DrawingBaseDetail p_ClassDetailTemplate)
{
  this.Drawing = p_Drawing;
  //this.ClassDetailTemplate = p_ClassDetailTemplate.GetType();
  this.ClassDetailTemplate = p_ClassDetailTemplate;
  ManifoldInspections.Utility.UtilityMapControl.SetupDrawingTableTemplate(this.Drawing, p_ClassDetailTemplate);
}
EN

回答 1

Stack Overflow用户

发布于 2012-05-29 14:32:14

可能无法加载依赖项。如果类型初始化程序使用可能发生的另一个程序集中的类型,因为LoadFile不像您所期望的那样解决依赖关系。MSDN说

LoadFile不将文件加载到LoadFrom上下文中,也不像LoadFrom方法那样使用加载路径解析依赖关系。

因此,我建议使用LoadFrom而不是LoadFile

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10800742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档