interop.net.test_loadorder | index e:\vslrft\dlr\languages\ironpython\tests\interop\net\test_loadorder.py |
INTERESTING LOAD SEQUENCES
Simply Load
* What should become visible?
* What should not?
- Type/namespaces in the referenced assembly
-
Type with static constructor
* Thread-safety: we could run the static ctor while initializing the package
and we shouldn't have any locks held when that happens.
Different loading approaches
* clr.AddReferenceXXX
* Assembly.LoadXXX
* ?
Loading the same assembly multiple times
* Loading one assembly simultaneously
* Loading multiple assemblies simultaneously
* Fetching types in one assembly simultaneously
- From mscorlib, or from user assembly
- "old", or new
Loading one .NET assembly after another .NET assembly
The loaded type is NS.C, now you try to load
* non-generic type which has type name NS
* generic type which has type name NS
The loaded non-generic type is C, now you try to load
* type which has namespace C
The loaded generic type is C`1, now you try to load
* type which has namespace C
The loaded type is non-generic type, now you try to load
* non-generic type, or generic type
- which has different namespace, different name
- which has different namespace, same name
- which has same namespace, different name
- which has same namespace, same name
The loaded type is generic type, now you try to
* non-generic type, or generic type
- which has different namespace, different name
- which has different namespace, same name
- which has same namespace, different name
- which has same namespace, same name
The loaded "type" C is already a merged non-generic type C and generic type
C`1 (if supported), now you try to load
* non-generic type which has same namespace, same name
* generic type which has same namespace, same name
The loaded "type" C is already a merged generic type C`1 and generic type
C`2 (if supported), now you try to load
* non-generic type which has same namespace, same name
* generic type which has same namespace, same name
Reload scenario (or think loading 2 assemblies in different angle)
The updated assembly now has
* one top-level type removed, added, unchanged, changed
* one nested type removed, add, unchanged, changed
* one type under namespace removed, added, unchanged, changed
* one whole namespace removed, added, unchanged, changed
* one member (method, field, ...) removed, added, unchanged, changed under one
type
Loading one interesting .NET assembly after another DLR module
The loaded DLR module is C, now you try to load
* a non-generic type which has type name C
* a generic type which has type name C`2
* a type which has namespace C
Loading one interesting DLR module after another .NET assembly
The loaded type is NS.C, now you try to load
* a DLR module "NS"
The loaded non-generic type is C, now you try to load
* a DLR module "C"
The loaded generic type is C`3, now you try to load
* a DLR module "C"
Modules | ||||||
|
Functions | ||
|
Data | ||
MAX_FAILURE_RETRY = 3 System = <module 'System' (CLS module, 4 assemblies loaded)> colon = ':' ironpython_dlls = ['Microsoft.Scripting.Core.dll', 'Microsoft.Scripting.dll', 'Microsoft.Scripting.Internal.dll', 'IronPython.Modules.dll', 'IronPython.dll'] is_32 = True is_64 = False is_cli = True is_cli32 = True is_cli64 = False is_cpython = False is_debug = True is_ironpython = True is_orcas = True is_peverify_run = False is_silverlight = False is_snap = False is_stress = False is_vista = False newline = '\r\n' one_arg_params = ('-X:Optimize', '-W', '-c', '-X:MaxRecursion', '-X:AssembliesDir') separator = r'\' |