В настоящее время я работаю над созданием сборки с виртуальными свойствами. Примеры в MSDN только создают нормальные свойства. Как создать класс внутри сборки с виртуальными свойствами?Как создать виртуальные свойства с помощью AssemblyBuilder в C# 4.0?
Я хотел бы иметь возможность создать класс, как это:
public class ClassA
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string ClassName { get; set; }
public virtual ClassB Partner { get; set; }
}
public class ClassB
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
PropertyBuilder класс не имеет PropertyAttributes.Virtual, так что я не знаю, как создать виртуальную собственность. Если я сам создам этот класс в Visual Studio, а затем откройте его в Reflector, свойства будут виртуальными, так что это возможно.
Как это сделать?
ab.Save() не сохранить созданную Ассамблею (даже с AssemblyBuilderAccess установлен в RunAndSave) Вы можете попробовать сохранения и загрузки сборки обратно в память? Я использую это в своем собственном программном обеспечении для работы с ошибкой в платформе .NET, которая определяет сборку как сборку времени выполнения даже после ее сохранения. Но если я использую это в своем коде, он не сохраняет никаких свойств или методов. –
Я сделал что-то не так с вашим кодом, который остановил его от работы. После повторной попытки, он отлично работает! –
@ThijsCramer, если вы передадите имя файла методу DefineDynamicModule, файл будет сохранен при дальнейшем использовании имени ab.Save (FileName). Я не знаю, является ли это ошибкой или функцией, потому что вам нужно указать имена файлов в обоих местах, и оба могут быть разными. Сборка dll будет ссылаться на модуль dll –