小编Tim*_*nem的帖子

如何将XmlIncludeAttribute应用于TypeBuilder?

我正在用C#开发一个库,它使用System.Reflection.Emit.TypeBuilder类生成运行时类型,我想生成以下类层次结构:

[XmlInclude(typeof(Derived))]
public class Base
{
}

public class Derived : Base
{
}
Run Code Online (Sandbox Code Playgroud)

我以下列方式使用TypeBuilder类:

class Program
{
    public static void Main(string[] args)
    {
        var assembly = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName("Test"), AssemblyBuilderAccess.Run);

        var moduleBuilder = assembly.DefineDynamicModule("Test");

        var baseTypeBuilder = moduleBuilder.DefineType("Base", TypeAttributes.Public, typeof(Object));

        var derivedTypeBuilder = moduleBuilder.DefineType("Derived", TypeAttributes.Public);

        derivedTypeBuilder.SetParent(baseTypeBuilder);

        baseTypeBuilder.SetCustomAttribute(new CustomAttributeBuilder(typeof(XmlIncludeAttribute).GetConstructor(new[] { typeof(Type) }), new[] { derivedTypeBuilder }));

        var baseType = baseTypeBuilder.CreateType();

        var derivedType = derivedTypeBuilder.CreateType();

        var attribute = baseType.GetCustomAttribute<XmlIncludeAttribute>();
    }
}
Run Code Online (Sandbox Code Playgroud)

电话:

var attribute = baseType.GetCustomAttribute<XmlIncludeAttribute>();
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

无法加载文件或程序集'Test,Version = 0.0.0.0,Culture …

.net c# reflection reflection.emit

12
推荐指数
2
解决办法
222
查看次数

Assembly.Load .NET Core

我有一个使用来动态生成的程序集AssemblyBuilder.DefineDynamicAssembly,但是当我尝试加载它时,出现以下错误:

System.IO.FileNotFoundException:'无法加载文件或程序集'test,Culture = neutral,PublicKeyToken = null'。该系统找不到指定的文件。'

这是要重现的完整代码:

var name = new AssemblyName("test");
var assembly = AssemblyBuilder.DefineDynamicAssembly(name, AssemblyBuilderAccess.Run);
var assembly2 = Assembly.Load(name);
Run Code Online (Sandbox Code Playgroud)

我正在使用.NET Core 2.0、2.1和2.2。

有人可以解释为什么会发生这种情况以及任何可能的解决方案吗?

c# .net-assembly .net-core

10
推荐指数
1
解决办法
371
查看次数