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.
Get C# in a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.