浏览代码

Use Distinct on depended extensions to filter duplicate extensions

Sydney Acksman 5 年之前
父节点
当前提交
3c2a32a75f
共有 1 个文件被更改,包括 4 次插入3 次删除
  1. 4 3
      csharp/src/Google.Protobuf/Reflection/FileDescriptor.cs

+ 4 - 3
csharp/src/Google.Protobuf/Reflection/FileDescriptor.cs

@@ -422,7 +422,8 @@ namespace Google.Protobuf.Reflection
             GeneratedClrTypeInfo generatedCodeInfo)
             GeneratedClrTypeInfo generatedCodeInfo)
         {
         {
             ExtensionRegistry registry = new ExtensionRegistry();
             ExtensionRegistry registry = new ExtensionRegistry();
-            AddAllExtensions(dependencies, generatedCodeInfo, registry);
+            registry.AddRange(GetAllExtensions(dependencies, generatedCodeInfo));
+    
             FileDescriptorProto proto;
             FileDescriptorProto proto;
             try
             try
             {
             {
@@ -445,9 +446,9 @@ namespace Google.Protobuf.Reflection
             }
             }
         }
         }
 
 
-        private static void AddAllExtensions(FileDescriptor[] dependencies, GeneratedClrTypeInfo generatedInfo, ExtensionRegistry registry)
+        private static IEnumerable<Extension> GetAllExtensions(FileDescriptor[] dependencies, GeneratedClrTypeInfo generatedInfo)
         {
         {
-            registry.AddRange(dependencies.SelectMany(GetAllDependedExtensions).Concat(GetAllGeneratedExtensions(generatedInfo)).ToArray());
+            return dependencies.SelectMany(GetAllDependedExtensions).Distinct().Concat(GetAllGeneratedExtensions(generatedInfo));
         }
         }
 
 
         private static IEnumerable<Extension> GetAllGeneratedExtensions(GeneratedClrTypeInfo generated)
         private static IEnumerable<Extension> GetAllGeneratedExtensions(GeneratedClrTypeInfo generated)