Browse Source

Add ITypeDefinition.MetadataName

pull/2643/head
Siegfried Pammer 4 years ago
parent
commit
1887412c46
  1. 11
      ICSharpCode.Decompiler/TypeSystem/ITypeDefinition.cs
  2. 3
      ICSharpCode.Decompiler/TypeSystem/Implementation/MetadataTypeDefinition.cs
  3. 6
      ICSharpCode.Decompiler/TypeSystem/Implementation/MinimalCorlib.cs

11
ICSharpCode.Decompiler/TypeSystem/ITypeDefinition.cs

@ -58,6 +58,17 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -58,6 +58,17 @@ namespace ICSharpCode.Decompiler.TypeSystem
/// </summary>
FullTypeName FullTypeName { get; }
/// <summary>
/// Gets the short type name as stored in metadata.
/// That is, the short type name including the generic arity (`N) appended.
/// </summary>
/// <remarks>
/// "Int32" for int
/// "List`1" for List&lt;T&gt;
/// "List`1" for List&lt;string&gt;
/// </remarks>
string MetadataName { get; }
/// <summary>
/// Gets/Sets the declaring type (incl. type arguments, if any).
/// This property will return null for top-level types.

3
ICSharpCode.Decompiler/TypeSystem/Implementation/MetadataTypeDefinition.cs

@ -70,6 +70,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -70,6 +70,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
var td = metadata.GetTypeDefinition(handle);
this.attributes = td.Attributes;
this.fullTypeName = td.GetFullTypeName(metadata);
this.MetadataName = metadata.GetString(td.Name);
// Find DeclaringType + KnownTypeCode:
if (fullTypeName.IsNested)
{
@ -349,7 +350,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -349,7 +350,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
}
public EntityHandle MetadataToken => handle;
public string MetadataName { get; }
public FullTypeName FullTypeName => fullTypeName;
public string Name => fullTypeName.Name;

6
ICSharpCode.Decompiler/TypeSystem/Implementation/MinimalCorlib.cs

@ -148,7 +148,9 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -148,7 +148,9 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
{
this.corlib = corlib;
this.typeCode = typeCode;
this.typeKind = KnownTypeReference.Get(typeCode).typeKind;
KnownTypeReference ktr = KnownTypeReference.Get(typeCode);
this.typeKind = ktr.typeKind;
this.MetadataName = ktr.Name + (ktr.TypeParameterCount > 0 ? "`" + ktr.TypeParameterCount : "");
}
IReadOnlyList<ITypeDefinition> ITypeDefinition.NestedTypes => EmptyList<ITypeDefinition>.Instance;
@ -164,6 +166,8 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -164,6 +166,8 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
public FullTypeName FullTypeName => KnownTypeReference.Get(typeCode).TypeName;
public string MetadataName { get; }
ITypeDefinition IEntity.DeclaringTypeDefinition => null;
IType ITypeDefinition.DeclaringType => null;
IType IType.DeclaringType => null;

Loading…
Cancel
Save