Exemple #1
0
        // Get the name of a metadata typeRef
        public string GetMetadataUsageName(MetadataUsage usage)
        {
            switch (usage.Type)
            {
            case MetadataUsageType.TypeInfo:
            case MetadataUsageType.Type:
                return(GetMetadataUsageType(usage).Name);

            case MetadataUsageType.MethodDef:
                var method = GetMetadataUsageMethod(usage);
                return($"{method.DeclaringType.Name}.{method.Name}");

            case MetadataUsageType.FieldInfo:
                var fieldRef = Package.FieldRefs[usage.SourceIndex];
                var type     = GetMetadataUsageType(usage);
                var field    = type.DeclaredFields.First(f => f.Index == type.Definition.fieldStart + fieldRef.fieldIndex);
                return($"{type.Name}.{field.Name}");

            case MetadataUsageType.StringLiteral:
                return(Package.StringLiterals[usage.SourceIndex]);

            case MetadataUsageType.MethodRef:
                type   = GetMetadataUsageType(usage);
                method = GetMetadataUsageMethod(usage);
                return($"{type.Name}.{method.Name}");
            }
            throw new NotImplementedException("Unknown metadata usage type: " + usage.Type);
        }
Exemple #2
0
 // Get the type used in a metadata usage
 public TypeInfo GetMetadataUsageType(MetadataUsage usage) => usage.Type switch
 {