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

Visual Studio動態代碼生成的實現基礎

開發 后端
本文作者之前想談一談如何通過引入框架或代碼生成來解決(在某種程度上)項目開發實際會遇到的編碼的問題(重復相似代碼和多種實現問題),順便提醒下初學者把精力放在靜態代碼生成器上,還不如放在如何在編輯代碼時動態生成基礎設施或持久化的代碼。

 這篇文章討論以下3個問題:

1.代碼生成器應該做什么

2.大多數代碼生成器的缺點

3.動態代碼生成實現的基礎

代碼生成器應該做什么?

我認為,目標是加快項目開發,方式是減少重復代碼手工操作,實現是用過代碼生成技術。反過來說,就是代碼生成要盡量讓能自動化的代碼不手動來操作。當然產生了很多附屬的優點,如穩定性、便于測試、可以集中精力在業務邏輯上等,可是不能本末倒置。套用一句話,一切不以自動化為目的代碼生成器都是耍流氓。

大多數代碼生成器的缺點

現在大多數的(應該不是所有)代碼生成器有一個***的問題,就是多次生成導致的拷貝粘貼(無法動態響應類結構或表結構的變化)。現在的代碼生成器大多數是在表結構和類代碼之間單向生成,但不代表代碼生成不能生成其他代碼。就算只從生成持久化代碼的角度考慮,這些代碼生成器除了能根據某個時間點的狀態生成一次性的代碼,就沒有什么價值了。而這些生成的代碼如果用于實際項目(不可能不調整結構),又會進行多次生成,產生多次拷貝粘貼。這樣的代碼生成器其實就是YY,只是YY。當然YY有理(我就曾是其中一員),YY無罪。我只想問問有幾個人在項目中實際使用了?有幾個人的項目連表結構和字段都沒改過? 我跟大家一樣都曾經對代碼生成器很感興趣,都自己去DIY一個。我甚至在實際項目中嘗試使用,可惜效果并不好。

理想的代碼生成器

理想的代碼生成器在我看來應該有以下優點:

1.能夠集成到開發環境中

2.能夠隨時根據模型或數據表的變化重新生成代碼

3.通過分部類或繼承完全隔離手工代碼出現在生成代碼的文件中

4.不要實體類和數據表之間直接映射

動態代碼生成實現的基礎

如果Visual Studio提供了對2種方式(從代碼或數據表開始)代碼生成的支持(如上所述,我不建議直接映射):

1.CodeModelEvents事件提供了對動態檢測模型變化并重新生成數據表的支持。

2.通過AddIn方式、T4方式對數據庫表進行動態檢測并重新生成模型文件的支持。

CodeModelEvents 的示意代碼

  1. /// <summary>實現 IDTExtensibility2 接口的 OnConnection 方法。接收正在加載外接程序的通知。</summary> 
  2. /// <param term='application'>宿主應用程序的根對象。</param> 
  3. /// <param term='connectMode'>描述外接程序的加載方式。</param> 
  4. /// <param term='addInInst'>表示此外接程序的對象。</param> 
  5. /// <seealso class='IDTExtensibility2' /> 
  6. public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, refArray custom) 
  7. _applicationObject = (DTE2)application; 
  8. _addInInstance = (AddIn)addInInst; 
  9.   
  10. OutputWindow outputWindow = (OutputWindow)_applicationObject.Windows.Item(Constants.vsWindowKindOutput).Object; 
  11. outputWindowPane = outputWindow.OutputWindowPanes.Add("Customer Event Information"); 
  12.   
  13. codeModelEvents = ((Events2)_applicationObject.Events).get_CodeModelEvents(null); 
  14. codeModelEvents.ElementChanged += CodeModelElementChanged; 
  15. codeModelEvents.ElementAdded += CodeModelElementAdded; 
  16. codeModelEvents.ElementDeleted += CodeModelElementDeleted; 
  17.   
  18. /// <summary>實現 IDTExtensibility2 接口的 OnDisconnection 方法。接收正在卸載外接程序的通知。</summary> 
  19. /// <param term='disconnectMode'>描述外接程序的卸載方式。</param> 
  20. /// <param term='custom'>特定于宿主應用程序的參數數組。</param> 
  21. /// <seealso class='IDTExtensibility2' /> 
  22. public void OnDisconnection(ext_DisconnectMode disconnectMode, ref Array custom) 
  23. if(codeModelEvents!=null
  24. codeModelEvents.ElementChanged -= CodeModelElementChanged; 
  25. codeModelEvents.ElementAdded -= CodeModelElementAdded; 
  26. codeModelEvents.ElementDeleted -= CodeModelElementDeleted; 
  27. /// <summary> 
  28. /// 輸出即使窗口信息 
  29. /// </summary> 
  30. /// <param name="Element"></param> 
  31. private void OutPutElementMessage(CodeElement Element) 
  32. outputWindowPane.OutputString("文件:" + Element.ProjectItem.Document.Name + "\n"); 
  33. outputWindowPane.OutputString("元素:" + Element.Name.ToString() + "\n"); 
  34. outputWindowPane.OutputString("類型:" + Element.Kind.ToString() + "\n"); 
  35. /// <summary> 
  36. /// 代碼模型元素更改 
  37. /// </summary> 
  38. /// <param name="Element"></param> 
  39. /// <param name="Change"></param> 
  40. private void CodeModelElementChanged(CodeElement Element, vsCMChangeKind Change) 
  41. OutPutElementMessage(Element); 
  42. /// <summary> 
  43. /// 代碼模型元素更改 
  44. /// </summary> 
  45. /// <param name="Element"></param> 
  46. private void CodeModelElementAdded(CodeElement Element) 
  47. OutPutElementMessage(Element); 
  48. /// <summary> 
  49. /// 代碼模型元素刪除 
  50. /// </summary> 
  51. /// <param name="Parent"></param> 
  52. /// <param name="Element"></param> 
  53. private void CodeModelElementDeleted(object Parent, CodeElement Element) 
  54. OutPutElementMessage(Element); 

運行效果:

可以在AddIn或T4中檢測數據庫表結構的變化,示意代碼如下

  1. <#@ template debug="false" hostspecific="True" Language="C#" #> 
  2. <#@ output extension=".cs" #> 
  3. <#@ Assembly Name="EnvDTE" #> 
  4. <#@ Import Namespace="EnvDTE" #> 
  5. <#@ Assembly Name="System.Xml" #> 
  6. <#@ Import Namespace="System.Xml" #> 
  7. <#@ Assembly Name="System.Data" #> 
  8. <#@ Import Namespace="System.Data" #> 
  9. <#@ Import Namespace="System.Data.Common" #> 
  10. <#@ Assembly Name="System.Configuration" #> 
  11. <#@ Import Namespace="System.Configuration" #> 
  12. using System; 
  13. namespace <
  14. DTE dte = ((DTE)((IServiceProvider)this.Host).GetService(typeof(DTE))); 
  15. Project project = null
  16. try 
  17. project = dte.SelectedItems.Item(1).ProjectItem.ContainingProject; 
  18. catch 
  19. project = dte.SelectedItems.Item(1).Project; 
  20. this.Write(project.Name); 
  21. #>.Model 
  22. <
  23. ProjectItem configItem = null
  24. try 
  25. configItem = project.ProjectItems.Item("web.config"); 
  26. catch 
  27. configItem = project.ProjectItems.Item("app.config"); 
  28. XmlDocument configDoc = new XmlDocument(); 
  29. configDoc.Load(configItem.Document.FullName); 
  30. XmlNode node = configDoc.SelectSingleNode("//configuration//connectionStrings//add[@name='ConnectionString']"); 
  31. string providerName = node.Attributes["providerName"].Value; 
  32. string connectionString = node.Attributes["connectionString"].Value; 
  33. DbProviderFactory factory = DbProviderFactories.GetFactory(providerName); 
  34. using (DbConnection conn = factory.CreateConnection()) 
  35. conn.ConnectionString = connectionString
  36. conn.Open(); 
  37. DataTable schema = conn.GetSchema("TABLES"); 
  38. for (int i = 0; i < schema.Rows.Count; i++) 
  39. // 
  40. conn.Close(); 
  41. #> 

 

在AddIn中也可以直接使用CodeModel或FileCodleModel直接進行代碼生成,如果通過T4,可以通過調用Solution.FindProjectItem找到T4文件,通過Open和Save方法讓T4模板自動運行更新代碼來達到動態更新的目的。

后記

T4的在我的電腦上實在是慢,每次總要弄的VS卡住一小會,如果在AddIn中直接生成代碼又失去了模板的靈活性,考慮在AddIn中先生成中間映射文件,再通知代碼生成程序來調用T4的模板方式或其他方式來生成代碼,也許效果會更好些。對于代碼生成,我現在的理解就是應該集成到IDE中并可以動態調用,做到生成代碼不能改動,重新生成十分方便,將由于結構變化導致需要調整的代碼部分的工作量壓縮到最小。

每隔一段時間,園子里總會熱一段代碼生成相關的話題。我希望盡量不誤導初學者,尤其是那些說自己的代碼生成器生成大部分代碼的,提高了多少倍工作效率的,要么是基本不提需求變化,要么是變化了很少改動結構,或者根本是自己寫的穩定需求。從我個人實踐的角度,用這些所謂的外置的代碼生成器,一旦數據庫表結構生成變化,就需要重新生成代碼并拷貝進項目。本來代碼生成就不是只針對對象持久化方面,也不是只有外置的方式,甚至在我看來外置的方式就是YY。

代碼生成這個東西,生成的應該是經過實踐的、穩定的、可以自動生成的代碼。如果對生成的代碼理解都很困難還在嘗試寫自己的代碼生成器,我覺得不好。寫代碼生成器,如果拋開代碼生成產生的根源和要解決的問題,一再的強調一些不相關的東西,卻一直回避到底如何在應用中加快項目進度、提高效率等這些內容,對初學者真的是很不好的影響。一個編碼能力很差(這么說不表示我編碼能力強,我就是很弱的那種),閱讀代碼能力都不行的,公布一個代碼生成器,你這是鬧哪出呢。

也許有人說,初學者可以在自己編寫代碼生成的過程中學到很多知識,比如界面和控件、模板等,這是另一種方式的自欺欺人。大多外置代碼生成器都不是web方式的,如果工作中一直從事asp.net開發,那所謂的界面和控件學到的知識還不如去學學自定義web控件開發了,除了代碼生成,學到的模板知識在其他哪些方面基本沒啥作用。畢竟所有初學者都遇到這種必須用模板的需求只能是YY。

通過查找發現相似代碼,進行重構,引入框架或代碼生成,本身就對代碼能力有一定的要求,一些基礎的代碼實現和代碼結構都搞不懂,就想做個會有很多人使用的某某代碼生成器,既浪費了自己的時間又誤導了初學者,這樣不好。我就有過這樣的經歷,希望能對別人也起到一些警醒的作用,在本身閱讀代碼和寫一些基礎代碼的能力都沒有的時候,別跟風,別浮躁,努力提高自己的基礎,即使研究代碼生成,也從加快項目進度的角度出發,把精力用在集成在IDE中的動態代碼生成上,要有一種追根溯源,立足實用的態度,不要看人家把msdn的示例代碼改一改發個隨筆說成自己原創,你就模仿,也不要看別人發了很多新技術的掃盲或入門系列很火,你就模仿。更不要看一些人用標題忽悠了很多人評論,你也照著做。搞不清楚來龍去脈,不要去學人家拋什么“XX技術無用論”,用"最XX的XX"之類的眼球文。即使能獲得很多不明真相的小白的推崇,誤導了眾多停留在索要源代碼為目標的初學者,也不能對自己起到任何提升的作用。

原文鏈接:http://www.cnblogs.com/easygame/archive/2012/09/18/2690819.html

【編輯推薦】

  1. Visual Studio 2012的C++原生單元測試
  2. Visual Studio 2012 Ultimate RC安裝手記
  3. VS 2012單元測試和測試資源管理器
  4. 微軟正式發布 Visual Studio 2012
  5. Visual Studio 11下的C++異步編程1

 

責任編輯:彭凡 來源: 博客園
相關推薦

2009-06-16 10:44:50

JS代碼折疊Visual Stud

2010-03-11 16:09:38

Visual StudSilverligh

2011-01-10 08:48:53

2009-11-05 09:42:42

Visual Stud

2009-09-07 09:22:17

Visual Stud代碼片段

2022-04-01 15:16:40

GitHub程序員人工智能

2009-08-21 13:29:20

Visual Stud

2010-09-25 08:50:00

Visual Stud

2009-12-02 09:43:38

Visual Stud

2009-12-10 16:50:58

Visual Stud

2009-12-04 11:17:00

Visual Stud

2011-02-18 10:46:57

Visual Stud

2009-07-01 17:30:14

樣式生成器Visual Stud

2009-12-04 14:29:05

Visual Stud

2012-04-25 11:04:13

Visual Stud

2009-12-04 17:21:35

Visual Stud

2009-12-10 17:05:10

Visual Stud

2010-03-11 16:29:28

Visual Stud

2013-11-14 01:09:35

微軟Visual StudVisual Stud

2023-09-05 07:32:22

vscode開源故障
點贊
收藏

51CTO技術棧公眾號

在线国产情侣| 免费无码国产精品| 国产精品2023| 色噜噜狠狠色综合欧洲selulu| 茄子视频成人在线观看| 亚洲一区二区三区网站| 欧美日韩视频| 亚洲人午夜精品| 天天久久综合网| 色在线中文字幕| 国产精品日韩成人| 成人免费视频网站| 日韩黄色片网站| 欧美日韩国产高清| 亚洲无av在线中文字幕| 日本少妇一级片| 亚洲天堂一区二区| 一区二区三区国产| 午夜精品一区二区在线观看| 欧美一级淫片aaaaaa| 麻豆国产一区二区| 69视频在线免费观看| 亚洲精品卡一卡二| 视频国产一区| 亚洲精品ady| 亚洲视频一二三四| 欧美羞羞视频| 亚洲6080在线| 强伦女教师2:伦理在线观看| 五月激情婷婷网| 国产乱国产乱300精品| 国产精品入口免费视| 日韩在线观看第一页| 欧美gayvideo| 国产亚洲综合久久| 亚洲av无码一区二区三区网址| 伊人久久一区| 欧美日韩一区视频| 日韩视频第二页| av在线不卡免费| 亚洲美女屁股眼交| 亚洲精品久久区二区三区蜜桃臀 | 美女又黄又免费的视频| 亚洲精品粉嫩美女一区| 欧美午夜xxx| 国产精品无码人妻一区二区在线| 1stkiss在线漫画| 国产精品国产三级国产aⅴ无密码| 欧美激情导航| 亚洲三级黄色片| av影院午夜一区| 国产精品日韩欧美一区二区| www.久久综合| 国产福利一区二区三区| 成人免费淫片aa视频免费| 亚洲影院一区二区三区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产精品毛片aⅴ一区二区三区| 欧美综合一区二区| av免费网站观看| 日本综合久久| 欧美天天综合网| 亚洲xxxx2d动漫1| 国产麻豆一区| 欧美久久久一区| 亚洲第一成肉网| 波多野结衣一区二区三区免费视频| 日韩午夜在线播放| 性活交片大全免费看| 国产毛片精品| 亚洲跨种族黑人xxx| 受虐m奴xxx在线观看| 欧美日韩xxxx| 色妞久久福利网| 人妻久久一区二区| 亚洲国产二区| 日本精品va在线观看| 无码人妻久久一区二区三区 | 亚洲精品字幕在线| 成人av综合一区| 麻豆av一区| 国产二区在线播放| 亚洲欧美另类图片小说| 日韩a级在线观看| 欧美男女交配| 欧美精品久久一区| 日本不卡视频一区| 激情五月色综合国产精品| 日韩视频第一页| 精品无码久久久久久久| 久久久久在线| 114国产精品久久免费观看| 色婷婷激情五月| 国产三级一区二区三区| 免费观看国产视频在线| 香蕉伊大人中文在线观看| 欧美日韩免费一区二区三区视频 | 日韩黄色在线播放| 另类中文字幕网| 国产免费一区二区| 99中文字幕一区| 亚洲高清一区二区三区| 中文字幕国产传媒| 国产精品白浆| 久久九九热免费视频| 欧美一级视频免费观看| 国内成+人亚洲+欧美+综合在线| 国产综合色一区二区三区| 9色在线观看| 欧美日韩一区二区在线| www激情五月| 精品国产一区探花在线观看| 久久久久久久亚洲精品| 亚洲天堂免费av| 99国产精品国产精品毛片| 只有这里有精品| 成人性生活视频| 精品日韩成人av| 色哟哟一一国产精品| 亚洲综合电影一区二区三区| 97神马电影| 91在线直播| 精品美女永久免费视频| 国内精品国产三级国产aⅴ久| 国产一区二区区别| 亚州成人av在线| 国产999久久久| 国产精品国产自产拍高清av | 蜜桃传媒一区二区| 亚洲男同gay网站| 欧美情侣在线播放| 久久精品视频18| 99精品国产在热久久下载| 7777精品伊久久久大香线蕉语言| 在线观看美女网站大全免费| 色呦呦一区二区三区| 黄色av网址在线观看| 欧美精品播放| 91九色视频在线观看| 麻豆av在线免费看| 欧美日韩美少妇| 青娱乐国产视频| 丝袜美腿高跟呻吟高潮一区| 九色91视频| 超碰99在线| 亚洲精品一区二区三区在线观看| 久久久99精品| 岛国一区二区三区| 亚洲乱码日产精品bd在线观看| 99久热在线精品视频观看| 日韩在线观看高清| 夜夜嗨av禁果av粉嫩avhd| 中文字幕久久午夜不卡| 九色91popny| 日韩精品1区| 国产在线日韩在线| 黄色在线播放网站| 日韩情涩欧美日韩视频| 欧美交换国产一区内射| 高清在线成人网| 久久国产精品网| 欧美调教视频| 国产91在线播放精品91| 大片免费播放在线视频| 欧美日韩在线直播| 国语对白在线播放| 国产高清一区日本| 国产 日韩 亚洲 欧美| 亚洲调教一区| 国产精品中文字幕在线观看| 国产一二区在线观看| 日韩一区二区三区免费看| 久久婷婷一区二区| 99re视频精品| 五月婷婷之综合激情| 亚洲成人精品| 国产欧美日韩一区二区三区| 亚洲欧洲自拍| 最新中文字幕亚洲| 性中国xxx极品hd| 欧美日韩国产中字| 亚洲a∨无码无在线观看| 国产酒店精品激情| 你懂的av在线| 日韩久久精品| 国产精品av一区| 日本精品在线中文字幕| 成人444kkkk在线观看| 欧美性猛交 xxxx| 欧美系列日韩一区| 久草视频在线免费看| 久久人人超碰精品| 国内自拍第二页| 日韩亚洲精品在线| 亚洲欧美国产精品桃花| 国产精品15p| 国产一区二区在线免费| 丁香高清在线观看完整电影视频| 亚洲香蕉伊综合在人在线视看| 国产毛片毛片毛片毛片毛片| 欧美日韩国产色| 青青草华人在线视频| 9i在线看片成人免费| 第一区免费在线观看| 小嫩嫩精品导航| 喜爱夜蒲2在线| 国产不卡一区| 国产精品视频免费一区二区三区| 国产精成人品2018| 97久久精品国产| 超碰在线无需免费| 一区二区三区视频免费| 日韩一区二区三区在线观看视频| 欧美人牲a欧美精品| 日韩黄色在线播放| 亚洲一区二区三区四区五区中文| 一本色道久久88| 久久伊人蜜桃av一区二区| 色综合久久久无码中文字幕波多| 蜜桃在线一区二区三区| 99精品免费在线观看| 国自产拍偷拍福利精品免费一| 亚洲一卡二卡区| 伊人久久大香线蕉综合网站| 国产精品v欧美精品v日韩| 日日夜夜精品| 国产精品久久久久久久久粉嫩av| 狼人综合视频| 97在线观看免费| 欧美激情成人动漫| 久久伊人色综合| 91社区在线观看| 亚洲天堂免费观看| 日韩精品系列| 日韩av网站大全| 欧美熟妇另类久久久久久不卡| 欧美一区二区视频在线观看| 最近中文字幕免费观看| 91久久国产综合久久| 欧美激情黑白配| 欧美午夜www高清视频| av大片在线免费观看| 亚洲国产视频一区| 久久久精品99| 亚洲一本大道在线| 久久网一区二区| 亚洲图片欧美色图| 欧美一级高潮片| 欧美日韩国产黄| 欧美激情亚洲综合| 精品毛片三在线观看| 你懂的国产在线| 在线观看国产日韩| 中文字幕+乱码+中文乱码www| 欧洲av在线精品| 91成人一区二区三区| 777久久久精品| 国产成人久久精品77777综合| 日韩一区二区三区视频在线观看| 国产成人精品毛片| 精品国产一区二区三区不卡 | 国产在线成人精品午夜| 午夜精品久久久久久不卡8050| 国产性一乱一性一伧一色| 亚洲444eee在线观看| 男人天堂av在线播放| 在线日韩国产精品| 91高潮大合集爽到抽搐| 日韩三级视频在线看| 四季av日韩精品一区| 亚洲欧美日韩精品| 一级日本在线| 欧美xxxx18性欧美| 99爱在线观看| 国产精品第100页| 国产高清视频一区二区| 国产精品久久亚洲7777| 亚洲小说图片| 自拍视频一区二区三区| 国产精品久久| 无码人妻丰满熟妇区五十路百度| 捆绑紧缚一区二区三区视频| www.欧美com| 国产日韩欧美精品综合| 国产高潮流白浆| 亚洲1区2区3区视频| 波多野结衣网站| 91精品在线麻豆| 无码精品黑人一区二区三区| 自拍视频国产精品| 青春草在线视频| 国产成人涩涩涩视频在线观看 | 国产成人精品免费视频大全最热 | 日韩久久精品电影| 午夜毛片在线| 久久久久国色av免费观看性色| 三上悠亚一区二区| 91国产丝袜在线放| 亚洲成在人线免费观看| 大桥未久一区二区三区| 欧美综合二区| 日本成人xxx| 国产女人18水真多18精品一级做| 印度午夜性春猛xxx交| 日韩欧美综合在线视频| xxxx国产精品| 中文字幕欧美国内| av最新在线| 亚洲一区二区三区视频| 综合干狼人综合首页| 99热这里只有精品7| 日韩精品三区四区| 怡红院一区二区| 国产精品第四页| 天天干天天色综合| 亚洲精品国精品久久99热一| 国产黄色在线免费观看| 国产精品久久精品| 日本成人中文| 成人免费网站入口| 国产真实乱对白精彩久久| 欧美日韩高清丝袜| 婷婷成人综合网| 午夜精品久久久久久久99热黄桃| 这里只有精品在线观看| 欧美成人影院| 久久亚洲一区二区| 亚洲福利国产| 91精品人妻一区二区三区蜜桃2| 日韩一区中文字幕| 中文在线免费看视频| 国产午夜精品视频| 色网在线免费观看| 久久大香伊蕉在人线观看热2| 亚洲婷婷免费| 台湾佬美性中文| 亚洲免费av网站| 国产福利小视频| 欧美成人精品h版在线观看| 91视频亚洲| 最新欧美日韩亚洲| 久久99精品国产91久久来源| 久久精品三级视频| 欧美色倩网站大全免费| www.亚洲.com| 国产精品视频内| 成人区精品一区二区婷婷| 成人精品视频一区二区| 国产亚洲短视频| 久久国产乱子伦精品| 在线播放日韩精品| 日韩成人在线电影| 亚洲免费视频播放| 国产精品小仙女| 久久久久香蕉视频| 亚洲国产精品久久久久| 蜜桃视频在线网站| 日本10禁啪啪无遮挡免费一区二区| 久久国产主播| 欧美激情视频二区| 欧美日韩免费不卡视频一区二区三区 | 欧美一三区三区四区免费在线看| jizz性欧美10| 成人免费视频观看视频| 国产亚洲欧洲| 国产又黄又粗的视频| 91精品久久久久久久久99蜜臂| 最新国产在线拍揄自揄视频| 99九九电视剧免费观看| 亚洲啪啪91| www.av欧美| 欧美日韩国产乱码电影| 在线你懂的视频| 国产一区免费观看| 男人的天堂久久精品| 永久免费看片直接| 精品久久久久久久久久久院品网| 亚洲精品一区| 三年中文高清在线观看第6集| 国产99精品在线观看| 亚洲欧美综合另类| zzijzzij亚洲日本成熟少妇| av不卡一区二区| 免费日韩视频在线观看| 专区另类欧美日韩| 欧美一区二区三区成人片在线| 日韩av电影在线网| 一区二区中文字| 亚洲av无码一区二区二三区| 欧美日韩激情一区二区| 俺来也官网欧美久久精品| 色大师av一区二区三区| 成人在线综合网| 日本久久综合网| 欧美精品性视频| 国产成人精品三级高清久久91| 久久精品一卡二卡| 色88888久久久久久影院野外| 91高清在线观看视频| 麻豆亚洲一区|