- if (lazyConstructor == null)
- {
- ModuleReader mod = module as ModuleReader;
- if (mod != null)
- {
- // Note that we only need to manually handle the MemberRef case here,
- // because a MethodDef will result in a lazy MethodInfo object being returned
- // when the constructor is resolved, so we can safely do that without
- // triggering an assembly load.
- int methodToken = mod.CustomAttribute.records[index].Type;
- if ((methodToken >> 24) == MemberRefTable.Index)
- {
- int methodIndex = (methodToken & 0xFFFFFF) - 1;
- int typeToken = mod.MemberRef.records[methodIndex].Class;
- if ((typeToken >> 24) == TypeRefTable.Index)
- {
- int typeIndex = (typeToken & 0xFFFFFF) - 1;
- if ((mod.TypeRef.records[typeIndex].ResolutionScope >> 24) == TypeRefTable.Index)
- {
- // nested types can't be represented using only a namespace and name,
- // so we fail
- ns = null;
- name = null;
- return false;
- }
- int typeNameSpace = mod.TypeRef.records[typeIndex].TypeNameSpace;
- ns = typeNameSpace == 0 ? null : mod.GetString(typeNameSpace);
- name = mod.GetString(mod.TypeRef.records[typeIndex].TypeName);
- return true;
- }
- }
- }
- }