Type forwarding is a CLR feature that allows us to move a type from its original assembly to another assembly in such a way that there is no need to recompile the applications referring to the original assembly.
Suppose you have created an assembly named
MyLibrary which contains a class named
MyClass. Let's say, some of your applications refer to the
MyLibrary assembly and utilizes
MyClass. In a later phase, you decide to move
MyLibrary to a newly created assembly called
MyAdvancedLibrary. If you ship a new version of
MyLibrary (which now doesn't have
MyClass), along with
MyAdvancedLibrary, then your existing applications looking for
MyLibrary will not find the
MyClass and end up with errors.
Now, in order to run your applications without recompiling them, you can use the Type Forwarding feature of the Common Language Runtime.
In the above scenario, you need to apply
TypeForwardedToAttribute to the new version of your
MyLibrary, so that requests for
MyClass are now forwarded to the newly created library
MyAdvancedLibrary that now contains
- Move the
MyClass code from
MyLibrary for the
- Compile the newly created
- Add a reference of
MyClass used to be located in that).
Now, you can ship the new version of
MyLibrary along with
MyAdvancedLibrary and run your applications without a recompile!
The .NET Framework version 2.0 does not allow type forwarding from assemblies written in Visual Basic. However, a Visual Basic application can consume forwarded types if it uses the assemblies coded in C# or C++.