Type Forwarding-New Feature in .Net Framework 2.0
Post by "rickey", 2007-03-22, 16:44-----------------------------------------------------
在.Net Framework2.0中,增加了一个新的功能--Type Forwarding(不知道如何翻译)。
这项功能使得当你在重构代码时,将一个类型MyClass 从一个程序集A移动到程序集B后,无须重新编译引用了程序集A的应用程序MyApp成为可能.
假如, 原先的版本中,程序集A(A.DLL)包含有一个类型MyClass,其有一个方法MyMethod(),MyApp程序引用了程序集A中的MyClass。
要实现Type Forwarding的目的,需要完成以下几步工作:
[*]将MyClass的代码从程序集A移动到程序集B;[*]编译程序集B,生成B.DLL;[*]在程序集A中添加对程序集B的引用;[*]在程序集A的AssemblyInfo.cs文件中,添加以下属性:[*]编译程序集A,生成A.DLL;[*]用新版本的程序集A(A.DLL)替换应用程序MyApp目录下的旧程序集A。此时,你无须编译MyApp,运用MyApp程序,即能顺利运行;
如果没有第4步中,其它步骤相同的方式运行 MyApp程序,此程序将崩溃。
示例代码如附件:TypeForwardingTest.rar。
该文件共有三个文件夹:分别为TypeForwardingTest,TypeForwardingTest_V1和TypeForwardingTest_V2,其说明如下:
[*]TypeForwardingTest文件夹 该文件夹中有应用程序MyApp和程序集A的源代码。
[*]TypeForwardingTest_V1文件夹 该文件夹中为:程序集A的AssemblyInfo.cs文件中,没有
语句。 [*]TypeForwardingTest_V2文件夹 该文件夹中为:程序集A的AssemblyInfo.cs文件中,有
语句。 验证步骤: [*]打开 TypeForwardingTest文件夹下的TypeForwardingTest.sln文件,并编译整个Solution;[*]运行MyApp.exe文件,可输入如下信息: The return value is:Hello, world.
Press Enter key to exit.
3. 打开TypeForwardingTest_V1文件夹下的TypeForwardingTest_V1文件,并编译整个Solution;
4, 将TypeForwardingTest_V1\A\bin\Debug目录下的A.dll和B.dll拷贝并覆盖TypeForwardingTest对应目录下的文件;
5,重复第2步操作,发现MyApp.exe崩溃了;
6, 打开TypeForwardingTest_V2文件夹下的TypeForwardingTest_V1文件,并编译整个Solution;
7, 将TypeForwardingTest_V2\A\bin\Debug目录下的A.dll和B.dll拷贝并覆盖TypeForwardingTest对应目录下的文件;
8,重复第2步操作,发现MyApp.exe能够正常运转,并显示出2中的信息;
参考资料:http://msdn2.microsoft.com/en-us/library/ms404275.aspx
页:
[1]