日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TypeForwardedTo Attribute ---- 类型传递

發布時間:2025/4/16 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TypeForwardedTo Attribute ---- 类型传递 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是類型傳遞?

類型傳遞是一個屬性(在TypeForwardedTo中實現),它允許你將一個類型從一個程序集(程序集A)移動到另一個程序集(程序集B),并且在客戶端實例化程序集A時不需要重新編譯,就可以運行。在一個組件(程序集)載入并被客戶端應用程序使用后,你可以用類型傳遞將組件中一個類型移動到另一個程序集,而客戶端應用程序仍將保持工作,不需要重新編譯。類型傳遞只能使用在從已存在的應用程序引用的組件。當你重新編譯一個應用程序時,在應用程序中使用的任何類型都必須是恰當的程序集引用(這個程序集已存在)。

下面這些步驟用來將一個類型從一個類庫移動到另一個。

1.添加一個TypeForwardedTo屬性到來源程序集類庫。

2.將類型聲明代碼剪切

3.將剪切的類型聲明代碼粘貼到目的類庫。

4.編譯兩個類庫

下面代碼示范將TypeA移動到DestLib類庫的屬性聲明。

using System.Runtime.CompilerServices;

[assembly:TypeForwardedTo(typeof(DestLib.TypeA))]

?

1.新建一個類庫項目命名為Milan,里面有2個方法:

using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace Milan {public class MyClass{public int Calculate(int x, int y){return x + y;}}public class MyResidentClassInLib1{public float CalculateRadius(float Radius){return (float)(2 * Radius * 3.141592654);}} }

2.新建一個WinForm程序,拖放2個按鈕,分別調用這2個方法:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Milan;namespace Calculate {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Calculate_Click(object sender, EventArgs e){MyClass myclass = new MyClass();MessageBox.Show(myclass.Calculate(10, 20).ToString());}private void CalculateRadius_Click(object sender, EventArgs e){MyResidentClassInLib1 lib = new MyResidentClassInLib1();MessageBox.Show(lib.CalculateRadius(200).ToString());}} }

現在能成功運行出結果。然后把Calculate方法移到另外一個程序集。

3.新建一個類庫項目,命名為Inter,同時把原來Milan項目里面的Calculate方法全部注釋,并把Calculate移到新的Inter項目,保證命名空間,方法都一樣:

using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace Inter {public class Inter{} }namespace Milan {public class MyClass{public int Calculate(int x, int y){return x + y;}} }

4.重新編譯Inter項目,Milan項目添加引用Inter的Dll,并在Milan項目的AssemblyInfo.cs文件里添加屬性:

[assembly: TypeForwardedTo(typeof(Milan.MyClass))]

5.重新編譯Milan項目。

6.把重新編譯過的Inter.dll和Milan.dll同時拷貝到Winform項目調用的文件夾。

7.再次運行,成功。

?

?

?

轉載于:https://www.cnblogs.com/Scarface/archive/2012/07/19/2599680.html

總結

以上是生活随笔為你收集整理的TypeForwardedTo Attribute ---- 类型传递的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。