diff --git a/MetadataProcessor.Shared/Tables/nanoSignaturesTable.cs b/MetadataProcessor.Shared/Tables/nanoSignaturesTable.cs index b75b20b..080ec5e 100644 --- a/MetadataProcessor.Shared/Tables/nanoSignaturesTable.cs +++ b/MetadataProcessor.Shared/Tables/nanoSignaturesTable.cs @@ -817,7 +817,15 @@ private void WriteAttributeArgumentValue( break; case NanoCLRDataType.DATATYPE_STRING: writer.Write((byte)nanoSerializationType.ELEMENT_TYPE_STRING); - writer.Write(_context.StringTable.GetOrCreateStringId((string)argument.Value)); + if (argument.Value == null) + { + // write sentinel for null string + writer.Write((ushort)0xFFFF); + } + else + { + writer.Write(_context.StringTable.GetOrCreateStringId((string)argument.Value)); + } break; default: Debug.Fail(dataType.ToString()); diff --git a/MetadataProcessor.Tests/TestNFApp/MyClass1.cs b/MetadataProcessor.Tests/TestNFApp/MyClass1.cs index 388cdab..0b54af3 100644 --- a/MetadataProcessor.Tests/TestNFApp/MyClass1.cs +++ b/MetadataProcessor.Tests/TestNFApp/MyClass1.cs @@ -31,6 +31,11 @@ public void MyMethodWithData() { } + [DataRow(999, null)] + public void MyMethodWithDataRowWithNull() + { + } + private readonly int _myField; [Ignore("I'm ignoring you!")]