Example #1
0
        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));
            }
        }
Example #2
0
 internal PropertyMember(IStructType parent, ICliMetadataPropertyTableRow metadataEntry)
     : base(parent, metadataEntry)
 {
 }
Example #3
0
 internal IndexerMember(IStructType parent, ICliMetadataPropertyTableRow metadataEntry, IGeneralSignatureMemberUniqueIdentifier uniqueIdentifier)
     : base(parent, metadataEntry, uniqueIdentifier)
 {
 }
Example #4
0
 internal static IMemberUniqueIdentifier GetPropertyIdentifier(ICliMetadataPropertyTableRow propertyDef)
 {
     return(TypeSystemIdentifiers.GetMemberIdentifier(propertyDef.Name));
 }
Example #5
0
 protected CliIndexerSignatureMember(TIndexerParent parent, ICliMetadataPropertyTableRow metadataEntry, IGeneralSignatureMemberUniqueIdentifier uniqueIdentifier)
     : base(parent, metadataEntry)
 {
     this.uniqueIdentifier = uniqueIdentifier;
 }
Example #6
0
 protected CliPropertyMember(TPropertyParent parent, ICliMetadataPropertyTableRow metadataEntry)
     : base(parent, metadataEntry)
 {
 }
Example #7
0
 public Property(CliInterfaceType parent, ICliMetadataPropertyTableRow metadataEntry)
     : base(parent, metadataEntry)
 {
 }
Example #8
0
 protected override IClassPropertyMember GetProperty(ICliMetadataPropertyTableRow metadataEntry)
 {
     return(new PropertyMember(this, metadataEntry));
 }
Example #9
0
 protected override IClassIndexerMember GetIndexer(ICliMetadataPropertyTableRow metadataEntry, IGeneralSignatureMemberUniqueIdentifier uniqueIdentifier)
 {
     return(new IndexerMember(this, metadataEntry, uniqueIdentifier));
 }
Example #10
0
 protected abstract TProperty GetProperty(ICliMetadataPropertyTableRow metadataEntry);
Example #11
0
 protected abstract TIndexer GetIndexer(ICliMetadataPropertyTableRow metadataEntry, IGeneralSignatureMemberUniqueIdentifier uniqueIdentifier);