gpt4 book ai didi

c# - 检查 .NET 动态程序集是暂时的还是持久的

转载 作者:太空宇宙 更新时间:2023-11-03 15:54:20 24 4
gpt4 key购买 nike

创建 System.Reflection.Emit.AssemblyBuilder 时,它可以持久化(使用 AssemblyBuilderAccess.Save 等进行初始化)或 transient (使用 AssemblyBuilderAccess.Run 等进行初始化)。我将为作为输入的程序集生成器创建 ModuleBuilder。但是无法为 transient 装配创建持久化模块,所以我必须在创建模块之前检查装配的状态。我怎样才能做到这一点?片段是:

public ModuleBuilder Handle(AssemblyBuilder assembly, string name)
{
if (assembly.IsPersisted) // IsPersisted is a kind of property I'm looking for
{
return assembly.DefineDynamicModule(name, name + ".dll");
}
else
{
return assembly.DefineDynamicModule(name);
}
}

我可以通过使用反射访问其内部字段来获取程序集状态,因此这不是我正在寻找的答案。

最佳答案

刚遇到这种情况 - 您可以处理这个问题的唯一真正方法是:

try
{
return assembly.DefineDynamicModule(name, name + ".dll");
}
catch(NotSupportedException)
{
return assembly.DefineDynamicModule(name);
}

不漂亮 - 但没有真正的选择。

关于c# - 检查 .NET 动态程序集是暂时的还是持久的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24285335/

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