Я разрабатываю библиотеку на С#, которая генерирует типы выполнения, используя класс System.Reflection.Emit.TypeBuilder и я хочу сгенерировать следующую иерархию классов:
[XmlInclude(typeof(Derived))]
public class Base
{
}
public class Derived : Base
{
}
Я использую класс 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>();
    }
}
Вызов:
var attribute = baseType.GetCustomAttribute<XmlIncludeAttribute>();
Я получаю следующую ошибку:
Не удалось загрузить файл или сборку "Test, Version = 0.0.0.0, Culture = neutral, PublicKeyToken = null" или одна из его зависимостей. Система не может найти указанный файл.
Любые идеи хорошо оценены: как я могу применить настраиваемый атрибут для TypeBuilder для базового класса, который ссылается на TypeBuilder для производного класса?
PS: Я использую Visual Studio 2017 (v15.7.5) и библиотеку классов С# (шаблон проекта.NET Framework). NET.NET Core или.NET Standard

