MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / GetAssemblyTypes

Method GetAssemblyTypes

Source/Engine/Engine/NativeInterop.cs:1610–1633  ·  view source on GitHub ↗

Returns all types owned by this assembly.

(Assembly assembly)

Source from the content-addressed store, hash-verified

1608 /// Returns all types owned by this assembly.
1609 /// </summary>
1610 private static Type[] GetAssemblyTypes(Assembly assembly)
1611 {
1612 var referencedAssemblies = assembly.GetReferencedAssemblies();
1613 var allAssemblies = Utils.GetAssemblies();
1614 var referencedTypes = new List<string>();
1615 foreach (var assemblyName in referencedAssemblies)
1616 {
1617 var asm = allAssemblies.FirstOrDefault(x => x.GetName().Name == assemblyName.Name);
1618 if (asm == null)
1619 continue;
1620 referencedTypes.AddRange(asm.DefinedTypes.Select(x => x.FullName).ToArray());
1621 }
1622
1623 // TODO: use MetadataReader to read types without loading any of the referenced assemblies?
1624 // https://makolyte.com/csharp-get-a-list-of-types-defined-in-an-assembly-without-loading-it/
1625
1626 // We need private types of this assembly too, DefinedTypes contains a lot of types from other assemblies...
1627 var types = referencedTypes.Any() ? assembly.DefinedTypes.Where(x => !referencedTypes.Contains(x.FullName)).ToArray() : assembly.DefinedTypes.ToArray();
1628
1629#if FLAX_EDITOR
1630 Assert.IsTrue(Utils.GetAssemblies().Count(x => x.GetName().Name == "FlaxEngine.CSharp") == 1);
1631#endif
1632 return types;
1633 }
1634
1635 internal static TypeHolder GetTypeHolder(Type type)
1636 {

Callers

nothing calls this directly

Calls 10

GetAssembliesMethod · 0.80
AnyMethod · 0.80
WhereMethod · 0.80
GetNameMethod · 0.45
AddRangeMethod · 0.45
ToArrayMethod · 0.45
SelectMethod · 0.45
ContainsMethod · 0.45
IsTrueMethod · 0.45
CountMethod · 0.45

Tested by

no test coverage detected