#c# #cil
Вопрос:
У меня есть библиотека DLL, содержащая пустой объект, который я хочу использовать в качестве базового объекта. Этот объект был скомпилирован непосредственно из cil с помощью ilasm.exe с /NOAUTOINHERIT
, поэтому он не наследуется от системы.Объект. Visual studio отлично загружает DLL, и приложение отлично компилируется, но когда я пытаюсь использовать этот объект в коде (используя классы, которые наследуют этот пустой базовый объект), я получаю исключение во время выполнения, в котором говорится:
System.TypeLoadException: 'Could not load type 'BaseObject' from assembly 'AssemblyName,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' because the parent does not exist.'
Мы создаем компилятор с использованием c# и хотим использовать примитивные типы в языке в нашем помощнике во время выполнения. Мы собираемся скомпилироваться в CIL и в CIL использовать нашу библиотеку DLL примитивов и помощник во время выполнения, а также флаг /NOAUTOINHERIT. Мы хотим написать помощник среды выполнения на c# и также использовать библиотеку DLL примитивов, для чего требуется ее загрузка, что вызывает исключение.
Есть ли что-нибудь с этим поделать? Любая конфигурация, опция проекта, опция компилятора, опция ilasm, которая могла бы позволить мне использовать этот базовый объект в моем проекте C#?
Заранее спасибо!
Комментарии:
1. Зачем вам нужен класс, который не наследуется от
object
? Я предполагаю, что ответ «удалить эту опцию ilasm» не может быть и речи?2. Не уверен, что это поддается проверке или даже допустимо иметь такой тип, я думаю, что это просто для тестирования
3. Мы создаем компилятор с использованием c# и хотим использовать примитивные типы в языке в нашем помощнике во время выполнения. Мы собираемся скомпилироваться в CIL и в CIL использовать нашу библиотеку DLL примитивов и помощник во время выполнения, а также флаг /NOAUTOINHERIT. Мы хотим написать помощник среды выполнения на c# и также использовать библиотеку DLL примитивов, для чего требуется ее загрузка, что вызывает исключение