internal SharpLangTypeGenericParameter[] InternalGetGenericParameters() { lock (instantiatedGenericParameters) { SharpLangTypeGenericParameter[] genericParameters; if (!instantiatedGenericParameters.TryGetValue(this, out genericParameters)) { // First time, create generic parameters var typeDefinition = InternalModule.MetadataReader.GetTypeDefinition(InternalHandle); var metadataGenericParameters = typeDefinition.GetGenericParameters(); // Early exit if empty if (metadataGenericParameters.Count == 0) { return(EmptyGenericParameters); } genericParameters = new SharpLangTypeGenericParameter[metadataGenericParameters.Count]; for (int i = 0; i < genericParameters.Length; ++i) { genericParameters[i] = new SharpLangTypeGenericParameter(InternalModule, metadataGenericParameters[i]); } instantiatedGenericParameters.Add(this, genericParameters); } return(genericParameters); } }
internal SharpLangTypeGenericParameter[] InternalGetGenericParameters() { lock (instantiatedGenericParameters) { SharpLangTypeGenericParameter[] genericParameters; if (!instantiatedGenericParameters.TryGetValue(this, out genericParameters)) { // First time, create generic parameters var methodDefinition = module.MetadataReader.GetMethodDefinition(definitionHandle); var metadataGenericParameters = methodDefinition.GetGenericParameters(); // Early exit if empty if (metadataGenericParameters.Count == 0) return EmptyGenericParameters; genericParameters = new SharpLangTypeGenericParameter[metadataGenericParameters.Count]; for (int i = 0; i < genericParameters.Length; ++i) { genericParameters[i] = new SharpLangTypeGenericParameter(module, metadataGenericParameters[i]); } instantiatedGenericParameters.Add(this, genericParameters); } return genericParameters; } }