示例#1
0
        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;
            }
        }