Browse Source

Use LazyInit

pull/3679/head
Christoph Wille 3 weeks ago
parent
commit
1467d13fec
  1. 14
      ICSharpCode.Decompiler/Metadata/AssemblyReferences.cs

14
ICSharpCode.Decompiler/Metadata/AssemblyReferences.cs

@ -261,11 +261,19 @@ namespace ICSharpCode.Decompiler.Metadata @@ -261,11 +261,19 @@ namespace ICSharpCode.Decompiler.Metadata
public Version? Version => entry.Version;
public string Culture => Metadata.GetString(entry.Culture);
byte[]? IAssemblyReference.PublicKeyToken => GetPublicKeyToken();
Lazy<byte[]?> publicKeyToken;
byte[]? publicKeyToken;
public byte[]? GetPublicKeyToken()
{
return publicKeyToken.Value;
if (entry.PublicKeyOrToken.IsNil)
return null;
var value = LazyInit.VolatileRead(ref publicKeyToken);
if (value == null)
{
value = LazyInit.GetOrSet(ref publicKeyToken, ComputePublicKeyToken());
}
return value;
}
private byte[]? ComputePublicKeyToken()
@ -328,7 +336,6 @@ namespace ICSharpCode.Decompiler.Metadata @@ -328,7 +336,6 @@ namespace ICSharpCode.Decompiler.Metadata
Metadata = metadata;
Handle = handle;
entry = metadata.GetAssemblyReference(handle);
publicKeyToken = new(ComputePublicKeyToken);
}
public AssemblyReference(MetadataFile module, AssemblyReferenceHandle handle)
@ -340,7 +347,6 @@ namespace ICSharpCode.Decompiler.Metadata @@ -340,7 +347,6 @@ namespace ICSharpCode.Decompiler.Metadata
Metadata = module.Metadata;
Handle = handle;
entry = Metadata.GetAssemblyReference(handle);
publicKeyToken = new(ComputePublicKeyToken);
}
public override string ToString()

Loading…
Cancel
Save