使用marshalbyrefobject管理内存

时间:2013-12-06 13:48:33

标签: c# reflection marshalbyrefobject

我有一个在本地程序集和当前目录中执行搜索的方法。它正在寻找一个基于提供的名称(反射)的类。但是我现在只想将我正在寻找的类/ dll加载到内存中,而不是加载它们并从中选择我想要的那个。 有人告诉我,marshalbyrefobject可以用来做到这一点。 [以下是我目前使用的代码]

解决方案是创建2个应用程序域并加载一个所有组件并执行检查然后卸载应用程序域,但我不知道如何去做。

1 个答案:

答案 0 :(得分:0)

据我所知,您可以通过使用程序集类预先查询它们来避免加载程序集。

完整的工作模式如下所示:

1 - 通过汇编类收集信息

装配文件:

Assembly assembly = Assembly.ReflectionOnlyLoadFrom(fileName);

本地集会:

Assembly myAssembly = Assembly.GetExecutingAssembly();

2 - 迭代通过每个程序集引用上的类

Assembly mscorlib = typeof(string).Assembly;

foreach (Type type in mscorlib.GetTypes())
{
    Console.WriteLine(type.FullName);
}

3 - 选择要使用的程序集后,加载到您的应用程序域

Assembly assembly = Assembly.Load(fullAssemblyName);

Assembly assembly = Assembly.LoadFrom(fileName);

从以下帖子中复制的示例,如果您认为他们有助于解决您的问题,请随时对其进行回复!

C#: List All Classes in Assembly