static MethodOnTypeBuilderInstWrapper() { string methodFieldName = IsMono ? "base_method" : "m_method"; string typeFieldName = IsMono ? "instantiation" : "m_type"; var methodField = methodOnTypeBuilderInstType.GetField(methodFieldName, BindingFlags.Instance | BindingFlags.NonPublic); if (methodField == null) { throw new InvalidOperationException($"Field '{methodOnTypeBuilderInstType.Name}.{methodFieldName}' is not found"); } m_methodExtractor = FieldsExtractor.GetExtractor <MethodBase, MethodInfo>(methodField); var typeField = methodOnTypeBuilderInstType.GetField(typeFieldName, BindingFlags.Instance | BindingFlags.NonPublic); if (typeField == null) { throw new InvalidOperationException($"Field '{methodOnTypeBuilderInstType.Name}.{typeFieldName}' is not found"); } m_typeExtractor = FieldsExtractor.GetExtractor <MethodBase, Type>(typeField); if (IsMono) { var genericMethodField = methodOnTypeBuilderInstType.GetField("generic_method_definition", BindingFlags.Instance | BindingFlags.NonPublic); if (genericMethodField == null) { throw new InvalidOperationException($"Field '{methodOnTypeBuilderInstType.Name}.generic_method_definition' is not found"); } m_genericMethodExtractor = FieldsExtractor.GetExtractor <MethodBase, MethodInfo>(genericMethodField); var methodArgumentsField = methodOnTypeBuilderInstType.GetField("method_arguments", BindingFlags.Instance | BindingFlags.NonPublic); if (methodArgumentsField == null) { throw new InvalidOperationException($"Field '{methodOnTypeBuilderInstType.Name}.method_arguments' is not found"); } m_methodArgumentsExtractor = FieldsExtractor.GetExtractor <MethodBase, Type[]>(methodArgumentsField); } }
static ConstructorBuilderWrapper() { var constructorBuilderMethodBuilderField = typeof(ConstructorBuilder).GetField("m_methodBuilder", BindingFlags.Instance | BindingFlags.NonPublic); if (constructorBuilderMethodBuilderField == null) { throw new InvalidOperationException("Field 'ConstructorBuilder.m_methodBuilder' is not found"); } m_methodBuilderExtractor = FieldsExtractor.GetExtractor <MethodBase, MethodInfo>(constructorBuilderMethodBuilderField); }
static MethodBuilderWrapper() { var methodBuilderParameterTypesField = typeof(MethodBuilder).GetField("m_parameterTypes", BindingFlags.Instance | BindingFlags.NonPublic); if (methodBuilderParameterTypesField == null) { throw new InvalidOperationException("Field 'MethodBuilder.m_parameterTypes' is not found"); } m_parameterTypesExtractor = FieldsExtractor.GetExtractor <MethodBase, Type[]>(methodBuilderParameterTypesField); }
static MethodBuilderWrapper() { string parameterTypesFieldName = IsMono ? "parameters" : "m_parameterTypes"; var parameterTypesField = typeof(MethodBuilder).GetField(parameterTypesFieldName, BindingFlags.Instance | BindingFlags.NonPublic); if (parameterTypesField == null) { throw new InvalidOperationException($"Field 'MethodBuilder.{parameterTypesFieldName}' is not found"); } m_parameterTypesExtractor = FieldsExtractor.GetExtractor <MethodBase, Type[]>(parameterTypesField); }
static MethodBuilderInstWrapper() { var methodField = methodBuilderInstType.GetField("m_method", BindingFlags.Instance | BindingFlags.NonPublic); if (methodField == null) { throw new InvalidOperationException($"Field '{methodBuilderInstType.Name}.m_method' is not found"); } m_methodExtractor = FieldsExtractor.GetExtractor <MethodBase, MethodInfo>(methodField); var instField = methodBuilderInstType.GetField("m_inst", BindingFlags.Instance | BindingFlags.NonPublic); if (instField == null) { throw new InvalidOperationException($"Field '{methodBuilderInstType.Name}.m_inst' is not found"); } m_instExtractor = FieldsExtractor.GetExtractor <MethodBase, Type[]>(instField); }
static ConstructorOnTypeBuilderInstantiationWrapper() { var constructorOnTypeBuilderInstantiationCtorField = constructorOnTypeBuilderInstantiationType.GetField("m_ctor", BindingFlags.Instance | BindingFlags.NonPublic); if (constructorOnTypeBuilderInstantiationCtorField == null) { throw new InvalidOperationException("Field 'ConstructorOnTypeBuilderInstantiation.m_ctor' is not found"); } m_ctorExtractor = FieldsExtractor.GetExtractor <MethodBase, MethodBase>(constructorOnTypeBuilderInstantiationCtorField); var constructorOnTypeBuilderInstantiationTypeField = constructorOnTypeBuilderInstantiationType.GetField("m_type", BindingFlags.Instance | BindingFlags.NonPublic); if (constructorOnTypeBuilderInstantiationTypeField == null) { throw new InvalidOperationException("Field 'ConstructorOnTypeBuilderInstantiation.m_type' is not found"); } m_typeExtractor = FieldsExtractor.GetExtractor <MethodBase, Type>(constructorOnTypeBuilderInstantiationTypeField); }
static MethodOnTypeBuilderInstantiationWrapper() { var methodOnTypeBuilderInstantiationMethodField = methodOnTypeBuilderInstantiationType.GetField("m_method", BindingFlags.Instance | BindingFlags.NonPublic); if (methodOnTypeBuilderInstantiationMethodField == null) { throw new InvalidOperationException("Field 'MethodOnTypeBuilderInstantiation.m_method' is not found"); } m_methodExtractor = FieldsExtractor.GetExtractor <MethodBase, MethodInfo>(methodOnTypeBuilderInstantiationMethodField); var methodOnTypeBuilderInstantiationTypeField = methodOnTypeBuilderInstantiationType.GetField("m_type", BindingFlags.Instance | BindingFlags.NonPublic); if (methodOnTypeBuilderInstantiationTypeField == null) { throw new InvalidOperationException("Field 'MethodOnTypeBuilderInstantiation.m_type' is not found"); } m_typeExtractor = FieldsExtractor.GetExtractor <MethodBase, Type>(methodOnTypeBuilderInstantiationTypeField); }
static TypeBuilderInstantiationWrapper() { var typeBuilderInstantiationTypeField = typeBuilderInstantiationType.GetField("m_type", BindingFlags.Instance | BindingFlags.NonPublic); if (typeBuilderInstantiationTypeField == null) { throw new InvalidOperationException("Field 'TypeBuilderInstantiation.m_type' is not found"); } m_typeExtractor = FieldsExtractor.GetExtractor <Type, Type>(typeBuilderInstantiationTypeField); var typeBuilderInstantiationInstField = typeBuilderInstantiationType.GetField("m_inst", BindingFlags.Instance | BindingFlags.NonPublic); if (typeBuilderInstantiationInstField == null) { throw new InvalidOperationException("Field 'TypeBuilderInstantiation.m_inst' is not found"); } m_instExtractor = FieldsExtractor.GetExtractor <Type, Type[]>(typeBuilderInstantiationInstField); }
static DynamicILInfoWrapper() { var m_methodSignatureField = typeof(DynamicILInfo).GetField("m_methodSignature", BindingFlags.Instance | BindingFlags.NonPublic); if (m_methodSignatureField == null) { throw new InvalidOperationException("Field 'DynamicILInfo.m_methodSignature' is not found"); } m_methodSignatureExtractor = FieldsExtractor.GetExtractor <DynamicILInfo, int>(m_methodSignatureField); var m_scopeField = typeof(DynamicILInfo).GetField("m_scope", BindingFlags.Instance | BindingFlags.NonPublic); if (m_scopeField == null) { throw new InvalidOperationException("Field 'DynamicILInfo.m_scope' is not found"); } m_scopeExtractor = FieldsExtractor.GetExtractor <DynamicILInfo, object>(m_scopeField); }
static ConstructorOnTypeBuilderInstWrapper() { string ctorFieldName = IsMono ? "cb" : "m_ctor"; string typeFieldName = IsMono ? "instantiation" : "m_type"; var ctorField = constructorOnTypeBuilderInstType.GetField(ctorFieldName, BindingFlags.Instance | BindingFlags.NonPublic); if (ctorField == null) { throw new InvalidOperationException($"Field '{constructorOnTypeBuilderInstType.Name}.{ctorFieldName}' is not found"); } m_ctorExtractor = FieldsExtractor.GetExtractor <MethodBase, MethodBase>(ctorField); var typeField = constructorOnTypeBuilderInstType.GetField(typeFieldName, BindingFlags.Instance | BindingFlags.NonPublic); if (typeField == null) { throw new InvalidOperationException($"Field '{constructorOnTypeBuilderInstType.Name}.{typeFieldName}' is not found"); } m_typeExtractor = FieldsExtractor.GetExtractor <MethodBase, Type>(typeField); }
static TypeBuilderInstWrapper() { string typeFieldName = IsMono ? "generic_type" : "m_type"; string instFieldName = IsMono ? "type_arguments" : "m_inst"; var typeField = typeBuilderInstType.GetField(typeFieldName, BindingFlags.Instance | BindingFlags.NonPublic); if (typeField == null) { throw new InvalidOperationException($"Field '{typeBuilderInstType.Name}.{typeFieldName}' is not found"); } m_typeExtractor = FieldsExtractor.GetExtractor <Type, Type>(typeField); var instField = typeBuilderInstType.GetField(instFieldName, BindingFlags.Instance | BindingFlags.NonPublic); if (instField == null) { throw new InvalidOperationException($"Field '{typeBuilderInstType.Name}.{instFieldName}' is not found"); } m_instExtractor = FieldsExtractor.GetExtractor <Type, Type[]>(instField); }
static DynamicILGenerator() { var assembly = typeof(DynamicMethod).Assembly; var dynamicILGeneratorType = assembly.GetType("System.Reflection.Emit.DynamicILGenerator"); var m_methodSigTokenField = dynamicILGeneratorType.GetField("m_methodSigToken", BindingFlags.Instance | BindingFlags.NonPublic); if (m_methodSigTokenField == null) { throw new InvalidOperationException("Field 'DynamicILGenerator.m_methodSigToken' is not found"); } m_methodSigTokenExtractor = FieldsExtractor.GetExtractor <ILGenerator, int>(m_methodSigTokenField); var m_scopeField = dynamicILGeneratorType.GetField("m_scope", BindingFlags.Instance | BindingFlags.NonPublic); if (m_scopeField == null) { throw new InvalidOperationException("Field 'DynamicILGenerator.m_scope' is not found"); } m_scopeExtractor = FieldsExtractor.GetExtractor <ILGenerator, object>(m_scopeField); }
static ConstructorBuilderWrapper() { if (!IsMono) { var methodBuilderField = typeof(ConstructorBuilder).GetField("m_methodBuilder", BindingFlags.Instance | BindingFlags.NonPublic); if (methodBuilderField == null) { throw new InvalidOperationException("Field 'ConstructorBuilder.m_methodBuilder' is not found"); } m_methodBuilderExtractor = FieldsExtractor.GetExtractor <MethodBase, MethodInfo>(methodBuilderField); } else { string parameterTypesFieldName = "parameters"; var parameterTypesField = typeof(ConstructorBuilder).GetField(parameterTypesFieldName, BindingFlags.Instance | BindingFlags.NonPublic); if (parameterTypesField == null) { throw new InvalidOperationException($"Field 'ConstructorBuilder.{parameterTypesFieldName}' is not found"); } m_parameterTypesExtractor = FieldsExtractor.GetExtractor <MethodBase, Type[]>(parameterTypesField); } }
static DynamicResolver() { var assembly = typeof(DynamicMethod).Assembly; dynamicResolverType = assembly.GetType("System.Reflection.Emit.DynamicResolver"); dynamicILInfoType = assembly.GetType("System.Reflection.Emit.DynamicILInfo"); dynamicILGeneratorType = assembly.GetType("System.Reflection.Emit.DynamicILGenerator"); BuildFactoryByDynamicILInfo(); BuildFactoryByDynamicILGenerator(); BuildGetCodeInfoDelegate(); BuildGetRawEHInfoDelegate(); BuildGetEHInfoDelegate(); var m_methodField = dynamicResolverType.GetField("m_method", BindingFlags.Instance | BindingFlags.NonPublic); if (m_methodField == null) { throw new InvalidOperationException("Field 'DynamicResolver.m_methodField' is not found"); } m_methodSetter = FieldsExtractor.GetSetter(m_methodField); var m_resolverField = typeof(DynamicMethod).GetField("m_resolver", BindingFlags.Instance | BindingFlags.NonPublic); if (m_resolverField == null) { throw new InvalidOperationException("Field 'DynamicResolver.m_resolver' is not found"); } m_resolverSetter = FieldsExtractor.GetSetter <DynamicMethod, object>(m_resolverField); var m_localSignatureField = dynamicResolverType.GetField("m_localSignature", BindingFlags.Instance | BindingFlags.NonPublic); if (m_localSignatureField == null) { throw new InvalidOperationException("Field 'DynamicResolver.m_localSignature' is not found"); } m_localSignatureExtractor = FieldsExtractor.GetExtractor <object, byte[]>(m_localSignatureField); }
static DynamicMethodWrapper() { var assembly = typeof(DynamicMethod).Assembly; dynamicScopeType = assembly.GetType("System.Reflection.Emit.DynamicScope"); var m_DynamicILInfoField = typeof(DynamicMethod).GetField("m_DynamicILInfo", BindingFlags.Instance | BindingFlags.NonPublic); if (m_DynamicILInfoField == null) { throw new InvalidOperationException("Field 'DynamicMethod.m_DynamicILInfo' is not found"); } m_DynamicILInfoExtractor = FieldsExtractor.GetExtractor <DynamicMethod, GrEmit.Utils.DynamicILInfo>(m_DynamicILInfoField); var m_ilGeneratorField = typeof(DynamicMethod).GetField("m_ilGenerator", BindingFlags.Instance | BindingFlags.NonPublic); if (m_ilGeneratorField == null) { throw new InvalidOperationException("Field 'DynamicMethod.m_ilGenerator' is not found"); } m_ilGeneratorExtractor = FieldsExtractor.GetExtractor <DynamicMethod, ILGenerator>(m_ilGeneratorField); getDynamicIlInfo = BuildGetDynamicILInfo(); }
private static Expression GetGetter(FieldInfo field, Expression obj, Type type) { var extractor = FieldsExtractor.GetExtractor(field); return(Expression.Convert(Expression.Invoke(Expression.Constant(extractor), obj ?? Expression.Constant(null)), type)); }