成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

概述C# COM接口相關知識

開發 后端
本文介紹為了保證同一個C# COM接口具有相同的托管類型推薦使用PIA,但是,在使用PIA的過程中,發現PIA有不少問題,因此CLR Interop的某位牛人Architect想出了新Idea。

C# 4.0中有下面這些功能: 1. dynamic/IDynamicObject 這個改進使得C#向動態語言又進了一步,雖然C#并不會變成類似Perl/Python之類的動態語言(因為Anders認為靜態語言所支持的一些特性比如Intellisense,類型檢查等等是相當有用的),但是這并不代表C#不應該對動態特性提供更好的支持。從我們Interop的角度來看,dynamic比較類似COM中的IDispatch,也就是動態的根據提供的函數/屬性名字動態選擇匹配的動作并執行之,只不過這個接口現在變成了IDynamicObject。寫法也很類似VB6。原來要寫:

  1. object obj = GetObject();  
  2. 2: obj.GetType().InvokeMember(“CallSomeFunc”, …., new object[] { 1 }); 

現在只需:

  1. dynamic obj = GetObject();  
  2. obj.CallSomeFunc(1); // obj通過IDynamicObject接口,支持CallSomeFunc方法。 

這一切都是通過IDynamicObject接口實現的。只要對象支持IDynamicObject,那么任意對象都可以通過這種方式來直接調用,不管是COM,Python,JavaScript,等等。這個功能感覺基本上就是定義一個C# COM接口,然后編譯器再把代碼翻譯一下就好了,關鍵還是各種對象的支持。 2. Optional Parameter / Named Parameters 以前C#特意不支持的可選參數終于現在可以支持了。命名參數也可以支持了,使用參數加冒號:

  1. OpenTextFile(“foo.txt”, Encoding.UTF8, bufferSize:123) 

Improved COM Interoperability

1.Automatic object –> dynamic mapping 原來返回object的地方,現在object可以自動被視為dynamic。因此,以前需要cast的地方現在可以省去cast了,反正dynamic 對象可以通過IDynamicObject來間接調用IDispatch接口(我覺得應該還是通過MemberInfo.Invoke來間接調用 IDispatch,但是暫時沒有時間驗證其實現方式)來自動調用對應的函數,而不需要cast到對應的interface再調用。原來是: (Range)excel.Cells[1, 1].Value = xxx; 現在可以寫成:excel.Cells[1,1].Value = xxx; // call IDynamicObject.SetMember(“Value”, xxx);

2.Optional and named parameters 這個無需多說了吧。BTW,現在TlbImp的結果中(也就是Interop Assembly)已經在Metadata包含了缺省值,只是C#不用而已,現在C#可以直接使用了。

3.Indexed Property 這個Anders一句話帶過,暫時不清楚具體是什么改進。

4.Optional ref modifier 在COM Interop時候可以不用寫ref。具體的Anders也沒有多談。覺得應該是很小的改動。

5.Interop Type Embedding (NO PIA) 這個也就是之前我在前一篇提到的Type Equvalency。原來為了保證同一個C# COM接口具有相同的托管類型(因為對于同一個C# COM接口可以有多個對應的托管的接口),推薦使用PIA(Primary Interop Assembly)。但是,在使用PIA的過程中,發現PIA有不少問題,因此CLR Interop的某位牛人Architect想出了這個新Idea:不使用PIA,而是允許對應同一C# COM接口的不同托管接口之間可以互換使用,無需Cast,CLR內部將它們等價看待。這是一個比較大的改動,不管是對于編譯器,還是CLR。

【編輯推薦】

  1. 簡單介紹C#預處理
  2. 學習C#無詞尾符號經驗談
  3. C#調用QuickTest自動化
  4. 詳解C#正規表達式
  5. C#字符串插入html標簽
責任編輯:佚名 來源: IT168
相關推薦

2009-08-10 13:40:46

創建C# COM對象

2009-08-25 10:57:09

C#接口

2009-09-02 14:18:08

C#聲明COM接口

2009-08-03 18:26:18

C#定義接口成員

2009-08-21 08:41:44

C#反射

2009-08-28 10:22:47

C# DLLImpor

2009-09-02 14:14:44

C# COM接口轉換

2009-08-07 13:30:20

C# Excel導入

2009-08-13 14:59:00

C#數據訪問層

2009-09-01 16:14:08

C# Socket類

2009-08-17 09:57:00

C# Windows

2009-08-20 16:28:45

C#匿名方法

2009-08-25 16:49:44

C#使用if語句

2009-09-03 10:42:16

C# Employee

2009-08-25 10:08:39

C# MyData對象

2009-08-24 18:09:13

C#構造函數

2009-08-19 11:09:00

C# Cast<T>

2009-08-31 09:44:23

C# Employee

2009-09-03 11:15:38

C#設置Coopera

2009-07-31 14:08:54

C# 匿名函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩不卡一区二区三区 | 天天干天天爱天天 | 中文字幕视频一区二区 | 亚洲性人人天天夜夜摸 | 欧美日韩成人在线观看 | 久久综合一区二区 | 日本激情视频中文字幕 | 操久久| 国产激情一区二区三区 | 91麻豆久久久 | 免费视频久久久久 | 国产精品国产三级国产播12软件 | 中文字幕 国产精品 | 国产在线观看一区二区三区 | 欧美在线一区视频 | 精品久久久久久亚洲精品 | 成人黄色网址大全 | 在线视频日韩 | 中文字幕久久精品 | 亚洲精品在线视频 | 亚洲欧美精品国产一级在线 | 亚洲视频在线观看 | 亚洲欧美成人影院 | 精久久 | 怡红院免费的全部视频 | 国产精品99免费视频 | 日韩在线中文字幕 | 黄色免费在线观看网站 | 视频一区二区在线观看 | 国产综合久久 | 亚洲 中文 欧美 日韩 在线观看 | 精品免费在线 | 亚洲性人人天天夜夜摸 | 青青久草 | 久久久久久国产精品久久 | 国产韩国精品一区二区三区 | 国产超碰人人爽人人做人人爱 | 国产伦精品一区二区三区高清 | 91精品久久久久久久久中文字幕 | 精品三级在线观看 | 欧美精品影院 |