public IGeneralSignatureMemberUniqueIdentifier GetIdentifier(IIntermediateConstructorSignatureMember member) { var internalHelper = member as _IntermediateConstructorSignatureMember; if (internalHelper == null) { return(TypeSystemIdentifiers.GetCtorSignatureIdentifier(member.Parameters.ParameterTypes.ToArray())); } else if (internalHelper.IsDisposed) { throw new InvalidOperationException(Utilities.Properties.Resources.ObjectStateThrowMessage); } else if (internalHelper.IsTypeInitializer) { return(TypeSystemIdentifiers.GetCtorSignatureIdentifier()); } else if (internalHelper.AreParametersInitialized) { return(TypeSystemIdentifiers.GetCtorSignatureIdentifier(member.Parameters.ParameterTypes.ToArray())); } else { return(TypeSystemIdentifiers.GetCtorSignatureIdentifier(new IType[0])); } }
internal static ISignatureMemberUniqueIdentifier GetCtorIdentifier(ICliMetadataMethodDefinitionTableRow methodDef, IType owner, _ICliManager manager) { return(TypeSystemIdentifiers.GetCtorSignatureIdentifier((from p in methodDef.Signature.Parameters select manager.ObtainTypeReference(p.ParameterType, owner, null, owner == null ? null : owner.Assembly)).SinglePass())); }
private void CheckIdentifierAt(int memberIndex) { if (memberIndex < 0 || memberIndex >= this.Count) { throw new ArgumentOutOfRangeException("memberIndex"); } if (this.memberIdentifiers[memberIndex] != null) { return; } switch (this.memberTypes[memberIndex]) { case CliMemberType.BinaryOperator: this.memberIdentifiers[memberIndex] = CliMemberExtensions.GetBinaryOperatorIdentifier((ICliMetadataMethodDefinitionTableRow)this.memberSources[memberIndex], (IType)this.parent, this.parent.IdentityManager); break; case CliMemberType.Constructor: var ctor = (ICliMetadataMethodDefinitionTableRow)this.memberSources[memberIndex]; if (ctor.Name == CliCommon.ConstructorStaticName && ctor.Parameters.Count == 0) { this.memberIdentifiers[memberIndex] = TypeSystemIdentifiers.GetCtorSignatureIdentifier(); } else { this.memberIdentifiers[memberIndex] = CliMemberExtensions.GetCtorIdentifier(ctor, (IType)this.parent, this.parent.IdentityManager); } break; case CliMemberType.Event: this.memberIdentifiers[memberIndex] = CliMemberExtensions.GetEventIdentifier((ICliMetadataEventTableRow)this.memberSources[memberIndex], (IType)this.parent, this.parent.IdentityManager); break; case CliMemberType.Field: this.memberIdentifiers[memberIndex] = (IGeneralMemberUniqueIdentifier)CliMemberExtensions.GetFieldIdentifier((ICliMetadataFieldTableRow)this.memberSources[memberIndex]); break; case CliMemberType.Indexer: this.memberIdentifiers[memberIndex] = CliMemberExtensions.GetIndexerIdentifier((ICliMetadataPropertyTableRow)this.memberSources[memberIndex], (IType)this.parent, this.parent.IdentityManager); break; case CliMemberType.Method: this.memberIdentifiers[memberIndex] = CliMemberExtensions.GetMethodIdentifier((ICliMetadataMethodDefinitionTableRow)this.memberSources[memberIndex], (IType)this.parent, this.parent.IdentityManager, () => (IMethodSignatureMember)this.Values[memberIndex].Entry); break; case CliMemberType.Property: this.memberIdentifiers[memberIndex] = (IGeneralMemberUniqueIdentifier)CliMemberExtensions.GetPropertyIdentifier((ICliMetadataPropertyTableRow)this.memberSources[memberIndex]); break; case CliMemberType.TypeCoercionOperator: this.memberIdentifiers[memberIndex] = CliMemberExtensions.GetTypeCoercionOperatorIdentifier((ICliMetadataMethodDefinitionTableRow)this.memberSources[memberIndex], (IType)this.parent, this.parent.IdentityManager); break; case CliMemberType.UnaryOperator: this.memberIdentifiers[memberIndex] = CliMemberExtensions.GetUnaryOperatorIdentifier((ICliMetadataMethodDefinitionTableRow)this.memberSources[memberIndex], (IType)this.parent, this.parent.IdentityManager); break; default: throw new InvalidOperationException("Member of invalid kind."); } }