gpt4 book ai didi

.net - 在 C# 中使用应用程序域

转载 作者:行者123 更新时间:2023-12-04 05:48:40 26 4
gpt4 key购买 nike

我得出的结论是,在我的项目中使用应用程序域将是最好的方法。我必须将不同的 dll 文件加载到我的项目中才能使用不同开发人员编写的。我不知道从哪里开始寻找,也不完全确定它是如何运作的。我看过几个例子,但它们并没有让我清楚地了解该怎么做。
我想知道的是,如果我有一个 dll 并将其加载到应用程序域中,我是否能够使用该 dll 中的公共(public)方法,或者如何使用此应用程序域?我还希望有人可以为我提供有关如何使用它、加载我的 dll 以及访问/使用它的教程链接。

提前致谢

最佳答案

如果你想在运行时在新的 appdomain 中加载项目的 urefrenced dll,那么你需要混合反射和 app domain 概念。这意味着在不同的应用程序域中使用反射加载 dll。

您的问题的示例代码:

static void UsereflectionWithAppDomain()
{
AppDomain mydomain = AppDomain.CreateDomain("MyDomain");
MethodInfo mi = default(MethodInfo);

// Once the files are generated, this call is
// actually no longer necessary.

byte[] rawAssembly = loadFile(@"d:\RelectionDLL.dll");

// rawSymbolStore - debug point are optional.
byte[] rawSymbolStore = loadFile(@"d:\RelectionDLL.pdb");
Assembly assembly = mydomain.Load(rawAssembly, rawSymbolStore);

Type reflectionClassType = assembly.GetType("ReflectionDLL.MyStaicClass");

mi = reflectionClassType.GetMethod("PrintI");
mi.Invoke(null, null);

AppDomain.Unload(mydomain);
}


// Loads the content of a file to a byte array.
static byte[] loadFile(string filename)
{
FileStream fs = new FileStream(filename, FileMode.Open);
byte[] buffer = new byte[(int)fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();

return buffer;
}

关于.net - 在 C# 中使用应用程序域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10370931/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com