精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

C# 4.0中COM互操作性和方差得到增強(qiáng)

原創(chuàng)
開(kāi)發(fā) 后端
本文將介紹C# 4.0中增強(qiáng)的特性:COM互操作性以及方差,使得你現(xiàn)在在.NET代碼中可以更容易地調(diào)用COM對(duì)象了,需要執(zhí)行的類型轉(zhuǎn)換更少了。

【51CTO獨(dú)家特稿】這里將為大家介紹C# 4.0當(dāng)中的COM互操作性以及方差這兩個(gè)新特性。51CTO之前曾報(bào)道過(guò)C#4.0新特性一覽及歷史回顧

增強(qiáng)的COM互操作性特性

C# 4.0在COM互操作性支持方面提供了很多改進(jìn),使得你現(xiàn)在在.NET代碼中可以更容易地調(diào)用COM對(duì)象了,需要執(zhí)行的類型轉(zhuǎn)換更少了,ref關(guān)鍵字不再需要,也不再需要主互操作程序集或PIA,從本質(zhì)上講,C# 4.0提供了大量的新特性,特別是在COM互操作方面更是下足了功夫,在前一篇文章中談到的動(dòng)態(tài)查詢和命名/可選參數(shù)的支持,幫助提高了與COM API如Office自動(dòng)化API互操作的體驗(yàn)。

例如,下面是C# 4.0以前的版本打開(kāi)一個(gè)Word文件的代碼:

  1. using Word = Microsoft.Office.Interop.Word;  
  2. namespace COMInterop  
  3. {  
  4.    class Program  
  5.    {  
  6.       static void Main(string[] args)  
  7.       {  
  8.          Word.Application wordApplication =   
  9.             new Word.Application() { Visible = true };  
  10.          object missingValue = System.Reflection.Missing.Value;  
  11.          object readOnlyValue = true;  
  12.          object fileName = @"C:\\DevX.docx";  
  13.          wordApplication.Documents.Open(ref fileName, ref   
  14.             missingValue, ref readOnlyValue,  
  15.             ref missingValue, ref missingValue,   
  16.             ref missingValue, ref missingValue,   
  17.             ref missingValue, ref missingValue,  
  18.             ref missingValue, ref missingValue,   
  19.            ref missingValue, ref missingValue,   
  20.            ref missingValue,ref missingValue);  
  21.       }  
  22.    }  

在最后的open調(diào)用中,你可以看到需要傳遞大量的可選參數(shù)以滿足函數(shù)調(diào)用,隨著C# 4.0中可選和命名參數(shù)的引入,現(xiàn)在做同樣的事情,需要的代碼要少得多了。

下面是C# 4.0中用來(lái)打開(kāi)Word文檔的代碼:

  1. using Word = Microsoft.Office.Interop.Word;  
  2. namespace COMInterop  
  3. {  
  4.    class Program  
  5.    {  
  6.       static void Main(string[] args)  
  7.       {  
  8.          Word.Application wordApplication = new   
  9.             Word.Application() {Visible = true};     
  10.          wordApplication.Documents.Open(@"C:\\DevX.docx",   
  11.             ReadOnly: true);  
  12.       }  
  13.    }  

性能改善

PIA是由COM接口產(chǎn)生的,你可以在你的應(yīng)用程序代碼中使用這個(gè)程序集以一種強(qiáng)類型的方式與COM對(duì)象互操作,但它們很笨重,很消耗內(nèi)存,會(huì)顯著降低應(yīng)用程序的性能。相反,互操作程序集通過(guò)前面的代碼編譯生成,只包含你的應(yīng)用程序真正用到的互操作代碼,從而大大減少了程序集的大小,提高了應(yīng)用程序的性能。

動(dòng)態(tài)導(dǎo)入大多數(shù)COM函數(shù)都是接收并返回變量類型,在PIA中表示為對(duì)象,因此,當(dāng)你使用這些方法時(shí),需要使用適當(dāng)?shù)膹?qiáng)制類型轉(zhuǎn)換,但在C# 4.0中,你可以使用dynamic關(guān)鍵字代替COM函數(shù)中的object,因此,現(xiàn)在不必再進(jìn)行類型轉(zhuǎn)換了。

思考一下下面的代碼,你需要使用轉(zhuǎn)換在excel文檔中為某個(gè)特定單元格設(shè)置一個(gè)值:

  1. ((Excel.Range)excelObj.Cells[5, 5]).Value =   
  2.    "This is sample text"

上面的代碼需要使用強(qiáng)制類型轉(zhuǎn)換,但在C# 4.0中,你可以消除掉強(qiáng)制類型轉(zhuǎn)換了,這一切都得感謝dynamic關(guān)鍵字,下面是C# 4.0中的實(shí)現(xiàn)方法:

  1. excelObj.Cells[55].Value = "This is sample text"

下面是一個(gè)更為完整的例子,使用的是C# 3.0代碼保存excel文檔:

  1. using Excel = Microsoft.Office.Interop.Excel;  
  2. namespace COMInterop  
  3. {  
  4.    class Program  
  5.    {  
  6.       static void Main(string[] args)  
  7.       {  
  8.          var excelApplication = new Excel.Application();  
  9.          excelApplication.Visible = true;  
  10.          dynamic excelWorkBook =   
  11.             excelApplication.Workbooks.Add(  
  12.             System.Reflection.Missing.Value);  
  13.          Excel.Worksheet wkSheetData = (  
  14.             Excel.Worksheet)excelWorkBook.ActiveSheet;  
  15.          excelWorkBook.SaveAs("Testfile.xls",   
  16.             System.Reflection.Missing.Value,   
  17.             System.Reflection.Missing.Value,  
  18.             System.Reflection.Missing.Value,   
  19.             System.Reflection.Missing.Value,   
  20.             System.Reflection.Missing.Value,  
  21.             Excel.XlSaveAsAccessMode.xlShared,   
  22.             System.Reflection.Missing.Value,   
  23.             System.Reflection.Missing.Value,  
  24.             System.Reflection.Missing.Value,   
  25.             System.Reflection.Missing.Value,   
  26.             System.Reflection.Missing.Value);  
  27.       }  
  28.    }  

在C# 4.0中,你不再需要使用缺失值和明確的強(qiáng)制類型轉(zhuǎn)換了,下面是在C# 4.0中沒(méi)有使用缺失值和強(qiáng)制類型轉(zhuǎn)換的代碼:

  1. using Excel = Microsoft.Office.Interop.Excel;  
  2. namespace COMInterop  
  3. {  
  4.    class Program  
  5.    {  
  6.       static void Main(string[] args)  
  7.       {  
  8.          var excelApplication = new Excel.Application();  
  9.          excelApplication.Visible = true;  
  10.          dynamic excelWorkBook = excelApplication.Workbooks.Add();  
  11.          Excel.Worksheet wkSheetData = excelWorkBook.ActiveSheet;  
  12.           excelWorkBook.SaveAs(  
  13.             "Testfile.xls",  
  14.             AccessMode: Excel.XlSaveAsAccessMode.xlShared);  
  15.       }  
  16.    }  

注意:COM有一個(gè)和托管代碼完全不同的編程模型,為了調(diào)用COM函數(shù),C#編譯器允許你傳遞參數(shù)值,并會(huì)產(chǎn)生臨時(shí)變量來(lái)保存這些值,當(dāng)函數(shù)調(diào)用完畢后這些變量就會(huì)被丟掉。

方差支持

在C# 4.0中,你可以對(duì)泛型類型指定in(僅輸入)好out(只返回)參數(shù),這些參數(shù)可以作為唯一的輸入?yún)?shù)或只作為這種類型的返回值被傳遞。

C# 4.0中對(duì)方差有兩方面的支持:協(xié)方差和方差。如果你必須使用完全匹配正式類型的名稱,那么返回的值或參數(shù)是不變的。如果你能夠使用更多的衍生類型作為正式參數(shù)類型的代替物,那么參數(shù)是可變的。如果你能夠?qū)⒎祷氐念愋头峙浣o擁有較少類型的變量,那么返回的值是逆變的。

我這里不涉及任何不變量參數(shù),你也應(yīng)該從C#早期版本中熟悉了。

協(xié)方差

使用一個(gè)簡(jiǎn)單的例子更容易理解協(xié)方差,注意string是一個(gè)特殊的類型,而object是一個(gè)泛型類型,因此string是協(xié)變到object的。下面我們來(lái)看看C# 4.0中是如何支持協(xié)方差的,在C# 4.0中定義的IEnumerable接口如下:

  1. public interface IEnumerable : IEnumerable  
  2. {  
  3.    IEnumerator GetEnumerator();  
  4. }  
  5. public interface IEnumerator : IEnumerator  
  6. {  
  7.   bool MoveNext();  
  8.   T Current { get; }  

在c#的早期版本中,IEnumerable<string>不是IEnumerable<object>。注意前面Ienumerator<out T>定義中的out參數(shù),它表明普通的T只可以在輸出位置,否則編譯器就會(huì)報(bào)告錯(cuò)誤,T中的接口是協(xié)變的,意味著IEnumerable<P>也是 IEnumerable<Q>用P替換Q所得,因此,一個(gè)字符串序列也是一個(gè)對(duì)象序列,因此下面的語(yǔ)句完全有效:
IEnumerable<object> someObj = new List<string>();

下面的例子說(shuō)明了你如何在C# 4.0中使用協(xié)方差:

  1. namespace Test  
  2. {  
  3.    class Base   
  4.    {  
  5.       //Methods and Properties of the Base Class  
  6.    }  
  7.    class Derived : Base   
  8.    {   
  9.       //Methods and Properties of the Derived Class  
  10.    }  
  11.    class Program  
  12.    {  
  13.       delegate T TestFunction<out T>();  
  14.       static void Main(string[] args)  
  15.       {  
  16.          TestFunction<Derived> derivedObj = () => new Derived();  
  17.          TestFunction<Base> baseObj = derivedObj;  
  18.       }  
  19.    }  

逆變性

C# 4.0中泛型接口的類型參數(shù)可以在in修飾字中,允許它們只出現(xiàn)在輸入位置,例如:

  1. public interface IComparer<in T>  
  2. {  
  3.   public int Compare(T left, T right);  

因此,比較器既可以比較對(duì)象也可以比較字符串,這就叫做逆變性。逆變性的一個(gè)例子就是Equals()函數(shù)和CompareTo()函數(shù)。如果你有一個(gè)函數(shù)可以比較兩個(gè)基類的實(shí)例,那么你也可以使用它比較兩個(gè)派生類的實(shí)例,你可以在一個(gè)類型對(duì)象的實(shí)例中存儲(chǔ)任何函數(shù)調(diào)用的結(jié)果,因?yàn)镃#中函數(shù)返回的類型是逆變的。

下面是前面例子的逆變副本:

  1. namespace Test  
  2. {  
  3.    class Base   
  4.    {  
  5.      
  6.    }  
  7.    class Derived : Base   
  8.    {  
  9.      
  10.    }  
  11.    class Program  
  12.    {  
  13.       delegate void TestDelegate<in T>(T a);  
  14.       static void Main(string[] args)  
  15.       {  
  16.          TestDelegate<Base> baseObj = (obj) => {   
  17.             System.Console.WriteLine(obj); };  
  18.          TestDelegate<Derived> derivedObj = baseObj;  
  19.       }  
  20.    }  

注意:類型方差只能在接口和委派類型上工作,只有在類型參數(shù)之間存在引用轉(zhuǎn)換才可以應(yīng)用方差,因此,IEnumerable<int>不是IEnumerable<object>,因?yàn)閕nt是一個(gè)值類型,object是一個(gè)引用類型,也就是說(shuō),整數(shù)到對(duì)象的轉(zhuǎn)換是箱子轉(zhuǎn)換,而不是一個(gè)引用轉(zhuǎn)換,因此它不是一個(gè)方差的例子。

正如你所看到的,C# 4.0的新特性和主互操作程序集一起可以工作得更好,對(duì)可選參數(shù)的支持意味著你不用明確地傳遞缺失值給函數(shù),而是用可選參數(shù)進(jìn)行替代,對(duì)命名參數(shù)的支持意味著不用按照特定的順序傳遞值,只要你使用了名稱就可以識(shí)別,對(duì)方差的支持消除了許多冗長(zhǎng)的,容易出錯(cuò)的強(qiáng)制類型轉(zhuǎn)換,總而言之,這些都是十分有益的變化。

【編輯推薦】

  1. C#歷史回顧及C# 4.0新特性一覽
  2. 介紹C# 4.0新特性dynamic
  3. C# 4.0中的協(xié)變和逆變
  4. C# 4.0 Dynamic關(guān)鍵字全解析
  5. C# 4.0中泛型協(xié)變性和逆變性詳解
責(zé)任編輯:彭凡 來(lái)源: 51CTO
相關(guān)推薦

2020-03-03 21:13:20

物聯(lián)網(wǎng)融合互操作

2009-02-17 18:41:06

虛擬化紅帽微軟

2009-06-08 10:49:00

JavaFX互操作性Java互操作性

2017-02-06 14:34:24

NFV網(wǎng)絡(luò)功能MANO

2017-02-06 11:50:12

NFV操作性測(cè)試

2012-09-07 09:51:07

云互操作性云可移植性云計(jì)算服務(wù)

2009-02-04 17:11:28

JavaFXJava兼容性

2010-02-24 15:27:04

ibmdwMashup

2018-02-27 15:41:27

IOT語(yǔ)義操作性

2009-07-17 13:49:57

Windows Emb

2023-10-13 09:00:00

云計(jì)算架構(gòu)

2023-12-27 14:50:10

2023-06-15 15:40:36

2010-06-25 15:55:43

NetBeans 6.

2015-06-16 09:19:12

OpenStackUnitedStack互操作

2018-03-21 16:38:19

IOT語(yǔ)義API

2012-05-15 16:21:25

2009-08-03 14:36:08

c#組件

2021-08-19 14:12:30

物聯(lián)網(wǎng)數(shù)據(jù)結(jié)構(gòu)IoT

2020-02-14 08:00:00

WindowsLinuxSamba
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

日本不卡电影| 日本亚洲精品| 久久精品青草| 色欲综合视频天天天| 91国产在线免费观看| 老熟妇一区二区| av电影在线免费| 国产高清成人在线| 久久精品亚洲94久久精品| 韩国日本美国免费毛片| 五月天福利视频| 亚洲一级二级| 日韩精品一区二区三区在线播放 | 亚洲国产精彩视频| 欧美电影免费观看高清| 在线观看成人小视频| 免费在线成人av电影| 国产一卡二卡在线| 视频免费一区二区| 亚洲激情欧美激情| 91精品黄色| 顶臀精品视频www| 日韩电影精品| 成人免费在线视频| 91精品国产综合久久久久久蜜臀 | 天天综合天天综合| 精品91在线| 亚洲国产精品久久精品怡红院| 欧美a级免费视频| 国产后入清纯学生妹| 91成人精品视频| 一本一道久久a久久精品| 久久久福利视频| 欧洲一级黄色片| 国产资源在线观看入口av| av电影天堂一区二区在线观看| 欧美日韩999| 色综合久久久无码中文字幕波多| 国产精品久久麻豆| 国产不卡免费视频| 国外成人性视频| 国产中文字幕一区二区| 亚洲深夜视频| 国产人成一区二区三区影院| 国产精品久久在线观看| 亚洲 欧美 国产 另类| 午夜精品久久久久久毛片| 中文字幕一区日韩精品欧美| 成人免费观看a| 久久高清无码视频| 亚洲三级性片| 欧美日韩视频在线观看一区二区三区| 2025韩国大尺度电影| 国内精品偷拍视频| 一本色道久久综合| 一区三区二区视频| 99国产精品免费视频| 老色鬼在线视频| 中文文精品字幕一区二区| 亚洲最大的成人网| 波多野结衣国产| 欧美综合另类| 精品奇米国产一区二区三区| 37pao成人国产永久免费视频| av在线免费观看网| 国产成人综合自拍| 国产精品黄视频| 久久一二三四区| 波多野结衣一区| 精品少妇一区二区| 欧美日韩在线观看不卡| 午夜伦理在线视频| 久久久亚洲高清| 91精品国产91久久久久青草| 精品久久久久久久久久久久久久久久久久| 亚洲a一区二区三区| 日韩电影免费观看中文字幕| 亚洲高清视频免费| 日本在线精品| 亚洲va欧美va天堂v国产综合| 亚洲mv在线看| 五月婷中文字幕| 国产精品一区一区| 国产精国产精品| 国产污视频在线看| 亚欧美无遮挡hd高清在线视频| 日韩精品在线第一页| 91蝌蚪视频在线| 蜜桃精品在线| 欧美午夜宅男影院在线观看| 九九久久九九久久| 婷婷在线视频| 国产欧美一区二区三区鸳鸯浴 | 国产aⅴ精品一区二区三区久久| 91麻豆精品国产| 99免费视频观看| а√在线天堂官网| 一区二区在线观看视频| 一区二区在线不卡| 成人在线播放视频| 久久亚洲私人国产精品va媚药| 爱情岛论坛亚洲入口| 国产精品久久久久久免费 | 午夜天堂在线视频| 日本美女久久| 在线一区二区视频| 成人在线观看黄| jizz内谢中国亚洲jizz| 岛国av一区二区三区| 国产www免费| 香蕉成人app免费看片| 亚洲精品视频在线看| 国产卡一卡二在线| 成人免费在线| 亚洲精品第一国产综合野| 好吊色这里只有精品| 综合图区亚洲| 一区二区三区91| 777久久精品一区二区三区无码| 国内精品久久久久国产| 亚洲欧美欧美一区二区三区| 欧美 国产 精品| 超鹏97在线| 一卡二卡三卡日韩欧美| 日韩精品久久一区二区| 国精一区二区三区| 精品国产老师黑色丝袜高跟鞋| 国产3p露脸普通话对白| 欧美aa一级| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 天堂在线资源库| 久久久久国色av免费看影院| 日韩精品在在线一区二区中文| 国产小视频在线播放| 久久久www成人免费无遮挡大片| 青娱乐一区二区| 午夜激情视频在线观看| 亚洲欧美偷拍三级| www.日本少妇| 亚洲天堂资源| 欧美日韩不卡一区| 亚洲综合中文网| 日本久久成人网| 中文字幕亚洲图片| 欧美片一区二区| 亚洲在线网站| 国产欧美精品在线| 国产黄色小视频在线观看| 99久久精品国产导航| 天天综合色天天综合色hd| yellow91字幕网在线| 性做久久久久久| 人妻丰满熟妇av无码区app| 伊人久久一区| 亚洲国产高清高潮精品美女| 亚洲欧美va天堂人熟伦| 中文精品电影| 日本午夜人人精品| 国产熟女一区二区三区五月婷| 成人不卡免费av| 台湾成人av| 伦理在线一区| 欧美在线观看一区二区| 日本r级电影在线观看| 亚瑟一区二区三区四区| 久久久精品在线| 日韩av大片在线观看| 激情综合五月天| 欧美12av| 欧美xxx黑人xxx水蜜桃| 91国产丝袜在线播放| 日本中文字幕有码| 成人午夜国产| 91精品国产成人www| 99热这里只有精品99| 国产亚洲一本大道中文在线| 日本一级黄视频| 国产原创一区| 日韩精品在线观看网站| 九九热国产在线| 久久91精品国产91久久小草 | 欧美日韩久久婷婷| 青青草原在线亚洲| 九九久久久久久久久激情| 中文在线字幕免费观| 99久精品国产| 福利在线一区二区| 国产一区二区三区| 一区二区三区黄色| 午夜影院免费在线观看| 成人午夜免费电影| 日日噜噜夜夜狠狠久久丁香五月| 国产成人精品一区二三区在线观看 | 欧美激情一二三区| 免费欧美一级视频| 另类图片第一页| 欧美激情精品久久久久久大尺度 | 午夜一级黄色片| 91麻豆国产自产在线观看| 久久人妻无码一区二区| 高清一区二区| 久久av.com| 国产夫妻性生活视频| 亚洲日本在线视频观看| 伊人国产在线视频| 国产一区2区| 国产成人精品综合久久久| 精品电影在线| 色狠狠桃花综合| 精品成人av一区二区三区| 麻豆九一精品爱看视频在线观看免费| 国产伦精品一区二区三区四区视频| 中文字幕在线观看网站| 日韩欧美视频在线| 青娱乐国产在线| 成人美女视频在线观看18| 日韩网站在线免费观看| 国产精品nxnn| 欧美在线一区二区视频| 撸视在线观看免费视频| 91国在线观看| 欧美视频一区二区在线| 激情综合色综合久久综合| 天堂av免费看| 中文字幕av一区二区三区四区| 欧美激情综合亚洲一二区| 人人妻人人澡人人爽久久av| 亚洲成a人v欧美综合天堂| 久久人人爽人人人人片| 亚洲欧美久久| 亚洲成人18| 国产精品2区| 久久乐国产精品| 精华区一区二区三区| 欧美美女黄视频| 久草视频免费在线播放| 26uuu另类欧美| 免费涩涩18网站入口| 亚洲第一偷拍| 国产一区二区在线网站| 精品欧美一区二区三区在线观看| 日日噜噜噜夜夜爽亚洲精品| 性生交大片免费看女人按摩| 狠狠躁夜夜躁人人爽超碰91| 免费看的黄色网| 国产在线播精品第三| 2018国产在线| 加勒比久久综合| 97se视频在线观看| 综合日韩av| 俺去啦;欧美日韩| 丁香六月天婷婷| 欧洲生活片亚洲生活在线观看| 国产精品久久久久久久精| 91丨九色丨黑人外教| 日本黄大片一区二区三区| 激情婷婷欧美| 色吧亚洲视频| 国产美女撒尿一区二区| 国产欧美日韩精品丝袜高跟鞋| 久久电影网站| 色噜噜国产精品视频一区二区| 免费观看黄色一级视频| 欧美亚洲愉拍一区二区| 欧美成人免费观看视频| 欧美激情一区二区三区蜜桃视频| youjizz.com日本| 久久激情综合网| 国产超级av在线| 欧美激情第8页| 亚洲国产日韩综合一区| 欧美freesex8一10精品| 92国产精品久久久久首页| 都市激情亚洲一区| 午夜精品久久久久久99热| 免费日本一区二区三区视频| 日韩精品免费在线| 亚洲精品视频网| 欧美日韩不卡在线| 色婷婷久久综合中文久久蜜桃av| 亚洲第一精品在线| 精品国产欧美日韩不卡在线观看| 久久精品这里都是精品| 亚洲图片综合网| 国产成人综合网站| 中文字幕丰满乱码| 丝袜亚洲精品中文字幕一区| 国产高清av在线播放| 欧美在线91| 欧美一级免费在线观看| 成人免费在线观看av| 欧洲精品码一区二区三区免费看| 精品素人av| 国产美女在线精品免费观看| 亚洲超碰在线观看| 成人在线国产精品| 亚洲18在线| 国产在线日韩在线| 日本黄色成人| 国产日韩在线看| 欧美啪啪网站| 91精品久久久久久久久久久久久| 国产麻豆久久| 国产精品美女www| 456成人影院在线观看| 全球成人中文在线| 欧美片第1页| 国产91网红主播在线观看| 三级成人黄色影院| 国产精品高潮呻吟久久av无限| 欧美不卡高清一区二区三区| 国产成人+综合亚洲+天堂| 激情开心成人网| 国产精品第一视频| h1515四虎成人| 国产精品视频久久久| 97久久中文字幕| 亚洲综合精品一区二区| 一区中文字幕电影| 国产欧美日韩一区| 神马久久影院| 日韩欧美亚洲在线| 91精品亚洲| 国产精品久久久久9999爆乳| 一区二区毛片| 黄色免费网址大全| 黄色小说综合网站| 少妇伦子伦精品无吗| 91香蕉视频黄| 亚洲一级片在线播放| ...中文天堂在线一区| 国产亚洲精品av| 欧美性猛交xxx| 91成品人影院| 精品国产在天天线2019| 日本一区高清| 色偷偷9999www| 黄网站在线观| 欧美怡红院视频一区二区三区| 成人在线黄色| 97碰碰视频| 国产亚洲一卡2卡3卡4卡新区| 最新欧美日韩亚洲| 在线日本高清免费不卡| 男人舔女人下面高潮视频| 狠狠色综合播放一区二区| 特级特黄刘亦菲aaa级| 久久久精品欧美丰满| 成年人二级毛片| 欧美日韩国产色| 国产精品日韩无码| 日韩国产一区三区| 含羞草www国产在线视频| 欧美性视频网站| 久久一级大片| 欧美在线激情| 午夜视频一区| 能看的毛片网站| 成人午夜视频网站| 天天色影综合网| 色哟哟国产精品| 亚洲AV无码一区二区三区少妇| 亚洲小视频在线| av丝袜在线| 91久久精品视频| 久久不见久久见国语| 亚洲精品蜜桃久久久久久| 免费观看在线综合色| 亚洲色图14p| 一区二区国产盗摄色噜噜| www.av88| 日韩精品极品毛片系列视频| 2020国产在线视频| 国产精品爽黄69天堂a| 欧美精品密入口播放| 日韩a级黄色片| 久久99热国产| 国产黄色大片免费看| 欧美日韩加勒比精品一区| 精品国产av鲁一鲁一区| 最好看的2019的中文字幕视频| a日韩av网址| 精品久久蜜桃| 韩国一区二区三区在线观看| 一区二区在线播放视频| 91视频观看视频| 中文在线观看免费网站| 91精品一区二区三区久久久久久| 国产精品一二三区视频| 欧美一级高清免费| 日韩av系列| 国产原创中文在线观看| 成人在线综合网站| 久久影院一区二区| 日韩精品综合一本久道在线视频| 成人直播在线| 亚洲一区二区三区乱码aⅴ| 亚洲一级淫片| 91亚洲一区二区| 亚洲精选视频免费看|