ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c#-在另一个AppDomain中创建类型的实例

2019-12-10 10:07:27  阅读:294  来源: 互联网

标签:appdomain createinstance c


我的情况是我有一个创建AppDomains的.net应用程序(例如控制台应用程序).然后,它需要在该AppDomain中的Types上创建实例和调用方法.每个AppDomain都有一个应依赖的特定目录,该目录不在Console Apps目录下(甚至不包含在该目录下).这是我的简单代码:

string baseDirectory = "c:\foo"; // <- where AppDomain's dependecies 

// set up the app domain
AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationName = DateTime.Now.ToString("hh:MM:ss:ffff");
setup.ApplicationBase = baseDirectory;
setup.PrivateBinPath = baseDirectory;

// create app domain
AppDomain domain = AppDomain.CreateDomain(
    name,
    AppDomain.CurrentDomain.Evidence,
    setup );

// instantiate Type from an assembly in that AppDomain
ObjectHandle handle = domain.CreateInstanceFrom(
    "SampleClassLibrary.dll", // <- exists in "c:\foo" 
    "SomeClassInTheDll" ); 

对CreateInstanceFrom的调用导致FileNotFoundExcepotion. FusionLog显示搜索到的目录为控制台应用目录.它不包括在“ baseDirecory”变量中通过AppDomain设置的搜索文件夹.

我究竟做错了什么?还有另一种执行驻留在另一个AppDomain中的代码的方法吗?

谢谢…

解决方法:

一种解决方法是将完整路径传递给.CreateInstanceFrom调用:

ObjectHandle handle = domain.CreateInstanceFrom( 
    baseDirectory + @"\SampleClassLibrary.dll", // <- exists in "c:\foo"  
    "SomeClassInTheDll" );

标签:appdomain,createinstance,c
来源: https://codeday.me/bug/20191210/2100944.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有