Microsoft.Cci.MutableCodeModel.IteratorClosureGenerator.GetMethodReference C# (CSharp) Method

GetMethodReference() private method

Instantiate a closure class method using the generic method parameters of the iterator method, if any.
private GetMethodReference ( IteratorClosureInformation iteratorClosure, IMethodDefinition methodDefinition ) : IMethodReference
iteratorClosure IteratorClosureInformation
methodDefinition IMethodDefinition
return IMethodReference
    IMethodReference GetMethodReference(IteratorClosureInformation iteratorClosure, IMethodDefinition methodDefinition) {
      ITypeReference typeReference = GetClosureTypeReferenceFromIterator(iteratorClosure);
      IMethodReference methodReference = methodDefinition;
      ISpecializedNestedTypeReference specializedNestedTypeRef = typeReference as ISpecializedNestedTypeReference;
      IGenericTypeInstanceReference genericInstanceRef = typeReference as IGenericTypeInstanceReference;
      if (specializedNestedTypeRef != null || genericInstanceRef != null) {
        methodReference = new SpecializedMethodReference() {
          ContainingType = typeReference,
          GenericParameterCount = methodDefinition.GenericParameterCount,
          InternFactory = this.host.InternFactory,
          UnspecializedVersion = methodDefinition,
          Type = methodDefinition.Type,
          Name = methodDefinition.Name,
          CallingConvention = methodDefinition.CallingConvention,
          Parameters = methodDefinition.ParameterCount == 0 ? null : new List<IParameterTypeInformation>(((IMethodReference)methodDefinition).Parameters),
          ExtraParameters = null,
          ReturnValueIsByRef = methodDefinition.ReturnValueIsByRef,
          ReturnValueIsModified = methodDefinition.ReturnValueIsModified,
          Attributes = null,
        };
      }
      return methodReference;
    }