首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用marshalbyrefobject管理内存

使用marshalbyrefobject管理内存
EN

Stack Overflow用户
提问于 2013-12-06 21:48:33
回答 1查看 126关注 0票数 0

我有一个在本地程序集和当前目录中执行搜索的方法。它正在根据所提供的名称(反射)查找类。然而,我现在只想将我正在查找的类/dll加载到内存中,而不是将它们全部加载并从中选择我想要的。有人告诉我,marshalbyrefobject可以用来做这件事。下面是我目前使用的代码

解决方案将是创建2个应用程序域,并让其中一个加载所有的组装,并进行检查,然后卸载应用程序域,尽管我不确定如何去做。

EN

回答 1

Stack Overflow用户

发布于 2013-12-06 22:34:38

据我有限的了解,您可以通过预先使用程序集类查询程序集来避免加载程序集。

完整的工作模型将如下所示:

1-通过类收集信息

程序集文件:

代码语言:javascript
复制
Assembly assembly = Assembly.ReflectionOnlyLoadFrom(fileName);

本地程序集:

代码语言:javascript
复制
Assembly myAssembly = Assembly.GetExecutingAssembly();

2-遍历每个程序集引用上出现的类

代码语言:javascript
复制
Assembly mscorlib = typeof(string).Assembly;

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

3-选择要使用的程序集后,Load将其加载到应用程序域中

代码语言:javascript
复制
Assembly assembly = Assembly.Load(fullAssemblyName);

代码语言:javascript
复制
Assembly assembly = Assembly.LoadFrom(fileName);

示例抄袭自下面的帖子,所以如果你觉得这些回复对解决你的问题做出了贡献,请随时对那里的回复进行提升!

C#: List All Classes in Assembly

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

https://stackoverflow.com/questions/20425535

复制
相关文章

相似问题

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