В терминах «что в коробке» вы можете использовать его только наоборот, используя ModuleDefinition.Import
API.
Чтобы перейти от TypeReference
к System.Type
, вам необходимо вручную найти его с помощью Reflection и AssemblyQualifiedName
.Имейте в виду, что Сесил использует условные обозначения IL для избежания вложенных классов и т. Д., Поэтому вам необходимо применить некоторые ручные исправления.
Если вы хотите разрешать только неуниверсальные, не вложенные типы, вам следует подойти.
Чтобы перейти от TypeReference
к TypeDefition
(если вы это имели в виду), вам нужно TypeReference.Resolve();
Пример запрашиваемого кода:
TypeReference tr = ...
Type.GetType(tr.FullName + ", " + tr.Module.Assembly.FullName);
// will look up in all assemnblies loaded into the current appDomain and fire the AppDomain.Resolve event if no Type could be found
Условные обозначения, используемые в Reflection, объясняются здесь , для условных обозначений Cecils обратитесь к исходному коду Cecil.