in src/Refasmer/Importer/ReferenceAssemblyAttr.cs [31:69]
private MethodDefinitionHandle CreateCustomReferenceAssemblyAttributeCtor()
{
MethodDefinitionHandle ctorHandle = default;
EntityHandle objectHandle = default;
if (IsNil(objectHandle))
objectHandle = _reader.TypeReferences
.FirstOrDefault(h => _reader.GetFullname(h) == FullNames.Object);
if (IsNil(objectHandle))
objectHandle = _reader.TypeDefinitions
.FirstOrDefault(h => _reader.GetFullname(h) == FullNames.Object);
if (!IsNil(objectHandle))
{
Trace?.Invoke($"Found System::Object type {_reader.ToString(objectHandle)}");
objectHandle = Import(objectHandle);
_builder.AddTypeDefinition(TypeAttributes.Class | TypeAttributes.Sealed | TypeAttributes.NotPublic,
_builder.GetOrAddString(FullNames.CompilerServices),
_builder.GetOrAddString("ReferenceAssemblyAttribute"),
objectHandle, NextFieldHandle(), NextMethodHandle());
ctorHandle = _builder.AddMethodDefinition(
MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.SpecialName |
MethodAttributes.RTSpecialName,
MethodImplAttributes.Managed, _builder.GetOrAddString(".ctor"), _builder.GetOrAddBlob(VoidCtorSignatureBlob), -1,
NextParameterHandle());
Trace?.Invoke($"Created attribute constructor with void signature {RowId(ctorHandle)}");
}
else
{
Trace?.Invoke("Not found System::Object type");
}
return ctorHandle;
}