Scoping Types and Type References
The assembly boundary
also forms a type accessibility
boundary: the C# internal accessibility modifier
allows types to restrict method accessibility to a single assembly.
Additionally, references to types are always scoped by the assembly
in which the type resides—the unique reference for a type
(known as a TypeRef) is the combination of a
reference to the assembly it was defined in and the fully qualified
type name including any namespaces. For example, this local variable
declaration:
System.Net.WebRequest wr;
is represented in MSIL as follows:
.assembly extern System.Net { .ver 1:0:2914:16 ... }
.locals(class [System.Net]System.Net.WebRequest wr)As you can see from this example, in order to reference a type unambiguously, we need to be able to identify the assembly that contains it unambiguously. The .NET Framework’s mechanism for naming assemblies is very powerful, and is a giant step beyond the use of ProgIDs and GUIDs in classic COM development.
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access