gpt4 book ai didi

c# - 将 InMemory 编译程序集加载到当前域

转载 作者:太空狗 更新时间:2023-10-30 00:16:48 26 4
gpt4 key购买 nike

我正在使用 CSharpCodeProvider 编译程序集,并且我将 CompileParameters GenerateInMemory 属性设置为 true因为我不想创建物理文件。

编译后,我可以获取 CompilerResults 并执行如下操作:-

 object x = cr.CompiledAssembly.CreateInstance("MyGeneratedClass");
Console.WriteLine(x);

我得到了预期的输出,CreateInstance 已经运行。

但是,我需要能够在不了解程序集的情况下访问当前 AppDomain 中的类型。我需要做这样的事情:-

 Type t = Type.GetType("MyGeneratedClass");
object x = Activator.CreateInstance(t);

此代码中的问题 t 最终为空。现在我怀疑虽然程序集已编译但未加载。我似乎无法找到将此程序集加载到域中以便解析其类型名称的方法。

谁能教教我?

最佳答案

恐怕这显然是不可能的。

documentation for Type.GetType明确指出:

如果调用 GetType 时程序集尚未保存到磁盘,则该方法返回 null。 GetType 不理解 transient 动态程序集;因此,调用 GetType 来检索 transient 动态程序集中的类型会返回 null。

如果您希望程序集的行为与任何常规程序集一样,则必须将程序集写入磁盘。

关于c# - 将 InMemory 编译程序集加载到当前域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5277166/

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