diff options
-rw-r--r-- | src/MessagePack.GeneratorCore/CodeAnalysis/TypeCollector.cs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/MessagePack.GeneratorCore/CodeAnalysis/TypeCollector.cs b/src/MessagePack.GeneratorCore/CodeAnalysis/TypeCollector.cs index 935ceb87..eeedbdad 100644 --- a/src/MessagePack.GeneratorCore/CodeAnalysis/TypeCollector.cs +++ b/src/MessagePack.GeneratorCore/CodeAnalysis/TypeCollector.cs @@ -720,7 +720,12 @@ namespace MessagePackCompiler.CodeAnalysis stringMembers.Add(member.StringKey, member); } - this.CollectCore(item.Type); // recursive collect + var messagePackFormatter = item.GetAttributes().FirstOrDefault(x => x.AttributeClass.ApproximatelyEqual(this.typeReferences.MessagePackFormatterAttribute))?.ConstructorArguments[0]; + + if (messagePackFormatter == null) + { + this.CollectCore(item.Type); // recursive collect + } } foreach (IFieldSymbol item in type.GetAllMembers().OfType<IFieldSymbol>()) |