Microsoft.Cci.InternFactory.GetMethodReferenceInternedId C# (CSharp) Méthode

GetMethodReferenceInternedId() private méthode

private GetMethodReferenceInternedId ( IMethodReference methodReference ) : uint
methodReference IMethodReference
Résultat uint
    uint GetMethodReferenceInternedId(IMethodReference methodReference) {
      Contract.Requires(methodReference != null);

      var genInstanceRef = methodReference as IGenericMethodInstanceReference;
      if (genInstanceRef != null) return this.GetGenericMethodInstanceReferenceInternedKey(genInstanceRef);
      uint containingTypeReferenceInternedId = this.GetTypeReferenceInternId(methodReference.ContainingType);
      uint requiredParameterTypesInternedId = this.GetParameterTypeListInternId(methodReference.Parameters.GetEnumerator());
      uint returnValueCustomModifiersInternedId = 0;
      uint genericParameterCount = methodReference.GenericParameterCount;
      if (methodReference.ReturnValueIsModified)
        returnValueCustomModifiersInternedId = this.GetCustomModifierListInternId(methodReference.ReturnValueCustomModifiers.GetEnumerator());
      uint returnTypeReferenceInternedId = this.GetTypeReferenceInternId(methodReference.Type);
      MultiHashtable<SignatureStore>/*?*/ methods = this.MethodReferenceHashtable.Find(containingTypeReferenceInternedId);
      if (methods == null) {
        methods = new MultiHashtable<SignatureStore>();
        this.MethodReferenceHashtable.Add(containingTypeReferenceInternedId, methods);
      }
      foreach (SignatureStore signatureStore in methods.GetValuesFor((uint)methodReference.Name.UniqueKey)) {
        if (
          signatureStore.CallingConvention == methodReference.CallingConvention
          && signatureStore.RequiredParameterListInternedId == requiredParameterTypesInternedId
          && signatureStore.ReturnValueCustomModifiersListInteredId == returnValueCustomModifiersInternedId
          && signatureStore.ReturnValueIsByRef == methodReference.ReturnValueIsByRef
          && signatureStore.ReturnTypeReferenceInternedId == returnTypeReferenceInternedId
          && signatureStore.GenericParameterCount == genericParameterCount
        ) {
          return signatureStore.InternedId;
        }
      }
      SignatureStore signatureStore1 = new SignatureStore(methodReference.CallingConvention, requiredParameterTypesInternedId,
        0, methodReference.ReturnValueIsByRef, returnValueCustomModifiersInternedId, returnTypeReferenceInternedId, genericParameterCount,
        this.CurrentMethodReferenceInternValue++);
      methods.Add((uint)methodReference.Name.UniqueKey, signatureStore1);
      return signatureStore1.InternedId;
    }