我正在使用C#在.NET 4.0框架(beta2)上创建一个Web应用程序.
当我尝试使用名为"ActiveHomeScriptLib"的程序集时,出现以下错误:
无法嵌入Interop类型'ActiveHomeScriptLib.ActiveHomeClass'.请改用适用的界面.
当我将框架更改为3.5版时,我没有任何错误.
什么是互操作类型,为什么只有在我使用4.0框架时才会出现这种情况?
我想得到一个System.Type给定的类型名称string.
例如,如果我有一个对象:
MyClass abc = new MyClass();
Run Code Online (Sandbox Code Playgroud)
我可以说:
System.Type type = abc.GetType();
Run Code Online (Sandbox Code Playgroud)
但如果我拥有的是:
string className = "MyClass";
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来在我的过程中找到默认的应用程序域.请注意,当前app域可能与默认域不同,例如当我的代码在内部运行时NUnit.
我知道我可以使用列表中进程的所有应用程序域在这个答案显示COM互操作技巧,并挑选一个它IsDefaultAppDomain()是true.然而,这似乎是一个重量级的解决方案.
有没有办法获得不需要过滤所有域的默认appdomain,最好不要通过COM互操作?
我需要在另一个appdomain中调用对象的方法(传递param并获得结果).想法?
UPD两个AppDomain都不是由我的代码创建的(主机应用程序创建它,然后我的代码被调用).如何从另一个AppDomain访问?
有没有办法确定哪个AppDomain是对象或ObjectHandle实例创建的?
在Process Explorer中,我可以查看由所选进程加载的所有dll(和dll详细信息).怎么能这样编程?
我可以得到这样的具体流程细节.但不确定从哪里去?
Process[] processlist = Process.GetProcesses();
foreach(Process theprocess in processlist){
Console.WriteLine(“Process: {0} ID: {1}”, theprocess.ProcessName, theprocess.Id);
}
Run Code Online (Sandbox Code Playgroud)
是否可以通过它的"友好名称"或ID来引用现有的AppDomain(不是由我的代码创建)?或者以任何其他方式?