internal static IGeneralSignatureMemberUniqueIdentifier GetIndexerIdentifier(ICliMetadataPropertyTableRow indexerDef, IType owner, _ICliManager manager) { ICliMetadataMethodDefinitionTableRow targetMethod = null; bool knockOffLast = false; var getMethod = targetMethod = indexerDef.GetMethod; if (getMethod == null) { targetMethod = indexerDef.SetMethod; if (targetMethod == null) { var semanticMethod = indexerDef.Methods.FirstOrDefault(); if (semanticMethod != null) { targetMethod = semanticMethod.Method; } } else { knockOffLast = true; } } if (targetMethod != null) { return(TypeSystemIdentifiers.GetSignatureIdentifier(indexerDef.Name, (from p in (knockOffLast ? targetMethod.Signature.Parameters.Take(targetMethod.Signature.Parameters.Count - 1) : targetMethod.Signature.Parameters) select manager.ObtainTypeReference(p.ParameterType, owner, null, owner == null ? null : owner.Assembly)).SinglePass())); } else { return(TypeSystemIdentifiers.GetSignatureIdentifier(indexerDef.Name)); } }
internal PropertyMember(IStructType parent, ICliMetadataPropertyTableRow metadataEntry) : base(parent, metadataEntry) { }
internal IndexerMember(IStructType parent, ICliMetadataPropertyTableRow metadataEntry, IGeneralSignatureMemberUniqueIdentifier uniqueIdentifier) : base(parent, metadataEntry, uniqueIdentifier) { }
internal static IMemberUniqueIdentifier GetPropertyIdentifier(ICliMetadataPropertyTableRow propertyDef) { return(TypeSystemIdentifiers.GetMemberIdentifier(propertyDef.Name)); }
protected CliIndexerSignatureMember(TIndexerParent parent, ICliMetadataPropertyTableRow metadataEntry, IGeneralSignatureMemberUniqueIdentifier uniqueIdentifier) : base(parent, metadataEntry) { this.uniqueIdentifier = uniqueIdentifier; }
protected CliPropertyMember(TPropertyParent parent, ICliMetadataPropertyTableRow metadataEntry) : base(parent, metadataEntry) { }
public Property(CliInterfaceType parent, ICliMetadataPropertyTableRow metadataEntry) : base(parent, metadataEntry) { }
protected override IClassPropertyMember GetProperty(ICliMetadataPropertyTableRow metadataEntry) { return(new PropertyMember(this, metadataEntry)); }
protected override IClassIndexerMember GetIndexer(ICliMetadataPropertyTableRow metadataEntry, IGeneralSignatureMemberUniqueIdentifier uniqueIdentifier) { return(new IndexerMember(this, metadataEntry, uniqueIdentifier)); }
protected abstract TProperty GetProperty(ICliMetadataPropertyTableRow metadataEntry);
protected abstract TIndexer GetIndexer(ICliMetadataPropertyTableRow metadataEntry, IGeneralSignatureMemberUniqueIdentifier uniqueIdentifier);