Exemplo n.º 1
0
 void LoadSecondaryCacheFromAssemblies()
 {
     foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
     {
         if (cachedAssemblies.Contains(assembly))
         {
             continue;
         }
         cachedAssemblies.Add(assembly);
         if (NoSwiftRuntimeReferences(assembly))
         {
             continue;
         }
         foreach (var t in assembly.GetTypes())
         {
             string swiftTypeName;
             if (SwiftTypeNameAttribute.TryGetSwiftName(t, out swiftTypeName))
             {
                 if (t.IsInterface)
                 {
                     var handle = SwiftProtocolTypeAttribute.DescriptorHandleForType(t);
                     if (handle != IntPtr.Zero)
                     {
                         protocolDescriptorCache.Add(handle, t);
                     }
                 }
                 else
                 {
                     secondaryCache.Add(swiftTypeName, t);
                 }
             }
         }
     }
 }