2

我正在重构一些代码,但我陷入了两难境地。

假设我们有以下场景:

  1. 包含许多通用接口和类的核心程序集
  2. 包含更专业类的库程序集。

库程序集引用核心程序集。到现在为止还挺好。

由于我正在重构它,核心程序集需要创建在库程序集中声明的对象。

好的,为了避免循环引用问题,我决定在需要时加载库程序集(并且仅在类型初始化的非常特定的点需要它)。

然而,整件事情的加载性能却直线下降到了一个黑暗的深渊……

有谁知道如何解决这个问题?


编辑添加

有些人要求我用来加载的代码......这真的很简单。

/*
 * Load the Library Assembly
 */
Assembly asm = Assembly.Load("Library, PublicKeyToken=...");

/*
 * Get desired type
 */
Type   t = asm.GetType("Library.DesiredType")

/*
 * Get the default constructor
 */
var ctor = type.GetConstructor(new Type[] {})
4

1 回答 1

5

程序集应该只加载到 AppDomain 中一次。重复调用加载程序集 X 应返回已加载的程序集。你可以发布你如何尝试这个的代码吗?您如何衡量“绩效”?您是否分析过您的应用程序以验证性能影响确实来自加载程序集?

于 2010-01-19T02:06:59.853 回答