日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

为WPF, UWP 及 Xamarin实现一个简单的消息组件

發布時間:2023/12/4 asp.net 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为WPF, UWP 及 Xamarin实现一个简单的消息组件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

友情提示:閱讀本文大概需要8分鐘。
歡迎大家點擊上方公眾號鏈接關注我,了解新西蘭碼農生活

本文目錄:

  • 1. 介紹

  • 2. Message - 消息

  • 3. Subscription - 訂閱

  • 4. MessageHub - 消息總線

    • 4.1 Subscribe - 訂閱

    • 4.2 Unsubscribe - 取消訂閱

    • 4.3 Publish - 發布

  • 5. 用法

    • 5.1 從NuGet安裝

    • 5.2 創建Message類

    • 5.3 訂閱

    • 5.4 發布Message

    • 5.5 參數

    • 5.6 取消訂閱

  • 6. 與MvvmCross.Messenger的差異

1. 介紹

Sub-Pub模式是一種常用的設計模式,用來在系統的不同組件中傳遞消息。發送消息的稱為Publisher,接收消息的稱為Subscriber。雙方一般不需要知道對方的存在,由一個代理負責消息的傳遞。其結構如圖所示:

最初的需求是我需要開發一個實現Socket發送/接收的WPF應用程序。首先,我應用MVVM模式創建了一個基本的WPF應用程序。然后,我創建了另一個項目來完成所有與Socket通信有關的工作。接下來,我必須將Socket項目集成到ViewModel項目中,以操作Socket連接。顯然,我們可以為此使用Event。例如,我們可以有一個名為?SocketServer的類,該類具有一個事件來接收Socket數據包,然后在ViewModel層中對其進行訂閱。但這意味著我們必須在ViewModel層中創建?SocketServer類的實例,該類將ViewModel層與Socket項目耦合在一起。我希望創建一個中間件以解耦它們。?這樣,發布者和訂閱者就不需要知道對方的存在了。MvvmCross提供了一個名為?Messenger?的插件以在ViewModel之間進行通信。但它依賴于某些MvvmCross組件,這意味著如果我想在其他項目中使用此插件,則必須引用MvvmCross。這對我當前的情況而言并不理想,因為實際上,Socket項目沒有必要引用MvvmCross。因此,我做了一個專注于發布/訂閱模式的項目,并刪除了對MvvmCross的依賴。現在,可以在任何WPF,UWP和Xamarin項目中重復使用它。我已將其發布到GitHub上:https://github.com/yanxiaodi/CoreMessenger ,并發布了NuGet包:https://www.nuget.org/packages/FunCoding.CoreMessenger/。本文僅介紹該組件的實現細節,后面會再寫一篇文章介紹如何使用Azure DevOps實現CI/CD。下面讓我們了解一下Sub-Pub模式的一種實現方式。

2. Message - 消息

Message是在此系統中表示消息的抽象類:

public abstract class Message{ public object Sender { get; private set; } protected Message(object sender) { Sender = sender ?? throw new ArgumentNullException(nameof(sender)); }}我們需要從該抽象類派生不同消息的實例。它有一個名為sender的參數,因此訂閱者可以獲取發送者的實例。但這并不是強制性的。

3. Subscription - 訂閱

BaseSubscription是訂閱的基類。代碼如下:

public abstract class BaseSubscription { public Guid Id { get; private set; } public SubscriptionPriority Priority { get; private set; } public string Tag { get; private set; } public abstract Task<bool> Invoke(object message); protected BaseSubscription(SubscriptionPriority priority, string tag) { Id = Guid.NewGuid(); Priority = priority; Tag = tag; } }它有一個?Id屬性和一個?tag屬性,因此您可以放置一些標簽來區分或分組訂閱實例。?Priority屬性是一個枚舉類型,用于指示訂閱的優先級,因此將按預期順序調用訂閱。訂閱有兩種類型,一是強引用訂閱StrongSubscription:public class StrongSubscription<TMessage> : BaseSubscription where TMessage : Message { private readonly Action<TMessage> _action;
public StrongSubscription(Action<TMessage> action, SubscriptionPriority priority, string tag): base(priority, tag) { _action = action; } public override async Task<bool> Invoke(object message) { var typedMessage = message as TMessage; if (typedMessage == null) { throw new Exception($"Unexpected message {message.ToString()}"); } await Task.Run(() => _action?.Invoke(typedMessage)); return true; } }它繼承了BaseSubscription并覆蓋了Invoke()方法。基本上,它具有一個名為?_action的字段,該字段在創建實例時定義。當我們發布消息時,訂閱將調用Invoke()方法來執行該_action。我們使用Task來包裝動作,以便可以利用異步操作的優勢。
這是名為?WeakSubscription”的另一種訂閱:public class WeakSubscription<TMessage> : BaseSubscription where TMessage : Message{ private readonly WeakReference<Action<TMessage>> _weakReference;
public WeakSubscription(Action<TMessage> action, SubscriptionPriority priority, string tag) : base(priority, tag) { _weakReference = new WeakReference<Action<TMessage>>(action); }
public override async Task<bool> Invoke(object message) { var typedMessage = message as TMessage; if (typedMessage == null) { throw new Exception($"Unexpected message {message.ToString()}"); } Action<TMessage> action; if (!_weakReference.TryGetTarget(out action)) { return false; } await Task.Run(() => action?.Invoke(typedMessage)); return true; }}它與強引用訂閱的區別在于action存儲在WeakReference字段中。您可以在這里了解更多信息:WeakReference 類。它用于表示類型化的弱引用,該弱引用引用一個對象,同時仍允許該對象被垃圾回收回收。在使用它之前,我們需要使用TryGetTarget(T)方法檢查目標是否已由GC收集。如果此方法返回false,則表示該引用已被GC收集。如果使用StrongSubscription,Messenger將保留對回調方法的強引用,并且Garbage Collection將不會破壞訂閱。在這種情況下,您需要明確取消訂閱,以避免內存泄漏。否則,可以使用WeakSubscription,當對象超出范圍時,會自動刪除訂閱。

4. MessengerHub - 消息總線

MessengerHub是整個應用程序域中的一個單例實例。我們不需要使用依賴注入來創建實例,因為它的目的很明確,我們只有一個實例。這是實現單例模式的簡單方法:public class MessengerHub{ private static readonly Lazy<MessengerHub> lazy = new Lazy<MessengerHub>(() => new MessengerHub()); private MessengerHub() { } public static MessengerHub Instance { get { return lazy.Value; } }}MessengerHub在其內部維護一個ConcurrentDictionary來管理訂閱的實例,如下所示:private readonly ConcurrentDictionary<Type, ConcurrentDictionary<Guid, BaseSubscription>> _subscriptions = new ConcurrentDictionary<Type, ConcurrentDictionary<Guid, BaseSubscription>>();該ConcurrentDictionary的Key是Message的類型,Value是一個ConcurrentDictionary,其中包含該特定Message的一組訂閱。顯然,一種類型可能具有多個訂閱。

4.1 Subscribe - 訂閱

MessageHub公開了幾種重要的方法來訂閱/取消訂閱/發布消息。
Subscribe()方法如下所示: public SubscriptionToken Subscribe<TMessage>(Action<TMessage> action, ReferenceType referenceType = ReferenceType.Weak, SubscriptionPriority priority = SubscriptionPriority.Normal, string tag = null) where TMessage : Message { if (action == null) { throw new ArgumentNullException(nameof(action)); } BaseSubscription subscription = BuildSubscription(action, referenceType, priority, tag); return SubscribeInternal(action, subscription); }
private SubscriptionToken SubscribeInternal<TMessage>(Action<TMessage> action, BaseSubscription subscription) where TMessage : Message { if (!_subscriptions.TryGetValue(typeof(TMessage), out var messageSubscriptions)) { messageSubscriptions = new ConcurrentDictionary<Guid, BaseSubscription>(); _subscriptions[typeof(TMessage)] = messageSubscriptions; } messageSubscriptions[subscription.Id] = subscription; return new SubscriptionToken(subscription.Id, async () => await UnsubscribeInternal<TMessage>(subscription.Id), action); }當我們訂閱消息時,會創建Subscription的實例并將其添加到字典中。根據您的選擇,它可能是強引用或者弱引用。然后它將創建一個SubscriptionToken,這是一個實現IDisposable接口來管理訂閱的類: public sealed class SubscriptionToken : IDisposable { public Guid Id { get; private set; } private readonly Action _disposeMe; private readonly object _dependentObject;
public SubscriptionToken(Guid id, Action disposeMe, object dependentObject) { Id = id; _disposeMe = disposeMe; _dependentObject = dependentObject; }
public void Dispose() { Dispose(true); GC.SuppressFinalize(this); }
private void Dispose(bool isDisposing) { if (isDisposing) { _disposeMe(); } } }當我們創建SubscriptionToken的實例時,實際上我們傳遞了一個方法來銷毀自己-因此,當調用Dispose方法時,它將首先取消訂閱。

4.2 Unsubscribe - 取消訂閱

取消訂閱消息的方法如下所示: public async Task Unsubscribe<TMessage>(SubscriptionToken subscriptionToken) where TMessage : Message { await UnsubscribeInternal<TMessage>(subscriptionToken.Id); } private async Task UnsubscribeInternal<TMessage>(Guid subscriptionId) where TMessage : Message { if (_subscriptions.TryGetValue(typeof(TMessage), out var messageSubscriptions)) { if (messageSubscriptions.ContainsKey(subscriptionId)) { var result = messageSubscriptions.TryRemove(subscriptionId, out BaseSubscription value); } } }這段代碼很容易理解。當我們取消訂閱消息時,訂閱將從字典中刪除。

4.3 Publish - 發布

我們已經訂閱了消息,并創建了存儲在字典中的訂閱實例。現在可以發布消息了。發布消息的方法如下所示: public async Task Publish<TMessage>(TMessage message) where TMessage : Message { if (message == null) { throw new ArgumentNullException(nameof(message)); } List<BaseSubscription> toPublish = null; Type messageType = message.GetType();
if (_subscriptions.TryGetValue(messageType, out var messageSubscriptions)) { toPublish = messageSubscriptions.Values.OrderByDescending(x => x.Priority).ToList(); }
if (toPublish == null || toPublish.Count == 0) { return; }
List<Guid> deadSubscriptionIds = new List<Guid>(); foreach (var subscription in toPublish) { // Execute the action for this message. var result = await subscription.Invoke(message); if (!result) { deadSubscriptionIds.Add(subscription.Id); } }
if (deadSubscriptionIds.Any()) { await PurgeDeadSubscriptions(messageType, deadSubscriptionIds); } }當我們發布一條消息時,MessageHub將查詢字典以檢索該消息的訂閱列表,然后循環執行操作。需要注意的另一件事是,由于某些訂閱可能是弱引用,因此需要檢查執行結果。如果引用已經被GC收集,則執行結果會返回false,這時候需要將該訂閱從訂閱列表中刪除。

5. 用法

5.1 從NuGet安裝PM> Install-Package FunCoding.CoreMessenger在整個應用程序域中,將MessengerHub.Instance用作單例模式。它提供了以下方法:
  • 發布:

    public async Task Publish<TMessage>(TMessage message)
  • 訂閱:

    public SubscriptionToken Subscribe<TMessage>(Action<TMessage> action, ReferenceType referenceType = ReferenceType.Weak, SubscriptionPriority priority = SubscriptionPriority.Normal, string tag = null)
  • 取消訂閱:public async Task Unsubscribe<TMessage>(SubscriptionToken subscriptionToken)

5.2 創建Message類

首先,定義一個從Message繼承的類,如下所示:public class TestMessage : Message{ public string ExtraContent { get; private set; } public TestMessage(object sender, string content) : base(sender) { ExtraContent = content; }}

然后在組件A中創建Message的實例,如下所示:

var message = new TestMessage(this, "Test Content");

5.3 訂閱

定義一個SubscriptionToken實例來存儲訂閱。在組件B中訂閱消息,如下所示:public class HomeViewModel { private readonly SubscriptionToken _subscriptionTokenForTestMessage; public HomeViewModel() { _subscriptionTokenForTestMessage = MessengerHub.Instance.Subscribe<TestMessage>(OnTestMessageReceived, ReferenceType.Weak, SubscriptionPriority.Normal); }
private void OnTestMessageReceived(TestMessage message) {#if DEBUG System.Diagnostics.Debug.WriteLine($"Received messages of type {message.GetType().ToString()}. Content: {message.Content}");#endif } }

5.4 發布Message

在組件A中發布消息:public async Task PublishMessage(){ await MessengerHub.Instance.Publish(new TestMessage(this, $"Hello World!"));}就是這么簡單。

5.5 參數

Subscribe方法的完整簽名為:public SubscriptionToken Subscribe<TMessage>(Action<TMessage> action, ReferenceType referenceType = ReferenceType.Weak, SubscriptionPriority priority = SubscriptionPriority.Normal, string tag = null) where TMessage : Message您可以指定以下參數:-?ReferenceType。默認值為?ReferenceType.Weak,因此您不必擔心內存泄漏。一旦SubscriptionToken實例超出范圍,GC便可以自動收集它(但不確定何時)。如果需要保留強引用,請將參數指定為ReferenceType.Strong,以使GC無法收集它。-SubscriptionPriority。默認值為SubscriptionPriority.Normal。有時需要控制一個“消息”的訂閱的執行順序。在這種情況下,請為訂閱指定不同的優先級以控制執行順序。注意,該參數不適用于不同的Message。-Tag。為訂閱指定一個標簽,是可選的。

5.6 取消訂閱

您可以使用以下方法取消訂閱:
- 使用Unsubscribe方法,如下所示:await MessengerHub.Instance.Unsubscribe<TestMessage>(_subscriptionTokenForTestMessage);- 使用SubscriptionToken的Dispose方法:_subscriptionTokenForTestMessage.Dispose();在許多情況下,您不會直接調用這些方法。如果使用強訂閱類型,則可能會導致內存泄漏問題。因此,建議使用ReferenceType.Weak。請注意,如果令牌未存儲在上下文中,則GC可能會立即收集它。例如:public void MayNotEverReceiveAMessage(){ var token = MessengerHub.Instance.Subscribe<TestMessage>((message) => { // Do something here }); // token goes out of scope now // - so will be garbage collected *at some point* // - so the action may never get called}

6. 與MvvmCross.Messenger的差異

如果您已經使用MvvmCross開發應用程序,并無需在ViewModel層之外傳遞消息,請直接使用MvvmCross.Messenger。我僅實現了一些主要方法,沒有提供UI線程調度的功能,并刪除了對MvvmCross組件的依賴,因此只要您的項目目標.NET Standard 2.0以上,就可以在任何WPF,UWP和Xamarin項目中使用。另外,Publish方法始終在后臺運行,以避免阻塞UI。但是您應該知道何時需要返回UI線程,尤其是當您需要與UI控件進行交互時。另一個區別是無需使用DI來創建MessageHub實例,該實例是所有應用程序域中的單例實例。如果解決方案包含需要相互通信的多個組件,則單例模式會比較簡單,DI將使其更加復雜。請點擊閱讀原文查看GitHub鏈接。如果覺得有用歡迎加星????

了解新西蘭IT行業真實碼農生活
請長按上方二維碼關注“程序員在新西蘭”

總結

以上是生活随笔為你收集整理的为WPF, UWP 及 Xamarin实现一个简单的消息组件的全部內容,希望文章能夠幫你解決所遇到的問題。

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

久久99精品久久久久蜜臀 | 国产精品久久久久久麻豆一区 | 亚洲精品乱码久久久久久高潮 | 国产中文字幕视频在线观看 | 亚洲日本国产精品 | 国产成人一区二区三区电影 | 精品一区 在线 | www.黄色片.com| 色老板在线视频 | 亚洲美女在线国产 | 69国产盗摄一区二区三区五区 | 在线 高清 中文字幕 | 91私密保健 | 午夜精品一区二区三区在线 | 亚州av一区 | 亚洲精品在线看 | 国产在线不卡一区 | 成人av久久 | 成人av免费在线观看 | 毛片永久新网址首页 | 在线电影91 | 色网免费观看 | 亚洲黄色在线 | 久久人人爽人人爽人人片av软件 | 亚洲手机av | 91精品区| 在线观看免费av片 | 免费观看一级成人毛片 | 久久欧美精品 | 在线观看视频亚洲 | 国产精品毛片久久久久久久 | 日本中文字幕在线视频 | 日本精品视频一区二区 | 日韩网站免费观看 | 九七人人干| 婷婷播播网 | 日韩网站在线 | 亚洲 中文 欧美 日韩vr 在线 | 91完整版 | 在线观看日本高清mv视频 | 亚洲精品午夜久久久久久久久久久 | 一区二区视频免费在线观看 | 欧美色图狠狠干 | 国产成人精品久 | 久久久久久久久黄色 | 很黄很黄的网站免费的 | 美女网站一区 | 国产一区二区手机在线观看 | 日本在线免费看 | 国产精品伦一区二区三区视频 | 亚洲一区二区三区精品在线观看 | 一本之道乱码区 | 超碰在线人 | www.av免费| sesese图片 | 久久亚洲成人网 | 久久久国产影院 | 国产精品久久久久久999 | 黄色录像av | 国产剧情一区在线 | 人人干人人草 | 欧美日韩精品在线观看 | 国产视频亚洲视频 | 精品超碰 | 久久免费成人精品视频 | 狠狠色丁香婷婷综合久小说久 | 亚洲国产小视频在线观看 | 在线观看涩涩 | 亚洲一区 av | 久久久久久久久久影院 | 韩日色视频 | 免费在线观看91 | 国产精品一区二区免费看 | 免费看三级黄色片 | av中文字幕免费在线观看 | 91自拍视频在线 | 成人av日韩 | 国产亚洲在线观看 | 在线观看欧美成人 | 日日射av| 欧美激情视频久久 | 亚洲人成人天堂h久久 | 最新在线你懂的 | 国内久久久 | 日韩av一区二区在线影视 | 狠狠干狠狠插 | 有码中文字幕在线观看 | 国产福利91精品一区二区三区 | 欧美黄在线 | 欧美精品乱码久久久久久 | 天天爱天天射天天干天天 | 亚洲免费观看视频 | 日韩欧美大片免费观看 | 国产夫妻性生活自拍 | 在线看国产日韩 | 成人在线观看免费 | 欧美一级性生活视频 | 国产精品一级视频 | 日韩理论视频 | 欧美一区免费观看 | 国产成人高清在线 | 亚洲精品国产欧美在线观看 | 国产精品一区二区av麻豆 | 免费看污黄网站 | 久久久久久美女 | 精品国产一区二区三区av性色 | 久久久毛片 | 国产一级一级国产 | 成人91在线观看 | 国产97色在线 | 欧美在线视频第一页 | 高清久久久久久 | 九九九在线观看 | 国产精品久免费的黄网站 | 国产又粗又猛又色又黄网站 | 色大片免费看 | 亚洲精品久久久久www | 日本成址在线观看 | 日韩电影在线观看一区二区 | 日日干干夜夜 | 国模精品一区二区三区 | 香蕉视频免费看 | 狠狠狠干狠狠 | 久久精品一区二区三区国产主播 | 99精品毛片| 日韩av在线影视 | 精品人人人 | www.精选视频.com | 久久怡红院 | 国产成人精品午夜在线播放 | 免费一级特黄毛大片 | 国产又粗又猛又色又黄网站 | 九色在线| 亚洲人毛片 | 天天色天天操综合 | 91精品少妇偷拍99 | 黄色毛片视频免费观看中文 | 日本中文字幕网站 | 色免费在线 | 国产99久久九九精品免费 | 玖玖综合网 | 麻豆久久一区 | 玖玖在线看 | 国产亚洲精品综合一区91 | 成人一级电影在线观看 | 国产精品成人品 | 色综合天天综合在线视频 | 国产精品 中文在线 | 国产精品一区二区久久精品 | www黄色 | 高清一区二区三区 | 狠狠狠狠狠狠狠狠 | 午夜精品久久久久久久99水蜜桃 | 午夜精品久久久久久久99 | 欧美精品一区二区免费 | 欧美在线你懂的 | 五月天激情婷婷 | 免费黄色网址大全 | 欧美 日韩 性 | 在线免费精品视频 | 欧美 激情 国产 91 在线 | 在线播放av网址 | 国产一区二区三区高清播放 | 中文字幕在线观看完整版 | 欧美男同视频网站 | 亚洲精品在线观看网站 | aaa日本高清在线播放免费观看 | 婷婷伊人综合亚洲综合网 | 久久久久久久久久国产精品 | 国产高清永久免费 | 97超碰人人在线 | 国产精品ⅴa有声小说 | 免费高清在线观看成人 | 亚洲婷婷在线视频 | 狠狠色丁香婷婷综合久久片 | 日韩a免费 | 国产精品二区在线观看 | 97久久精品午夜一区二区 | 一级片视频免费观看 | 这里只有精品视频在线 | 国内揄拍国产精品 | 欧美成人性战久久 | 久久久久久久久久久久久久免费看 | 午夜.dj高清免费观看视频 | 99精品国产高清在线观看 | 亚洲精品国产视频 | 91精品综合在线观看 | av午夜电影 | 911免费视频| 91传媒在线观看 | 亚洲国产日韩一区 | 日韩一区二区三区免费视频 | 一区二区精 | 成人在线视频你懂的 | 国产91在线免费视频 | 天天曰夜夜爽 | 91精品视频免费看 | 国产夫妻性生活自拍 | 成年人免费在线播放 | 久久久免费精品视频 | 西西4444www大胆无视频 | 91精品国产综合久久婷婷香蕉 | 亚洲国产一区在线观看 | 亚洲涩涩网 | 日日夜夜精品免费 | 视频在线91 | 97免费| 国产高清专区 | 国产视频精品网 | 国产原创91 | 中文字幕高清在线播放 | 99久久精品日本一区二区免费 | 久久美女高清视频 | 日韩高清免费在线观看 | 久久99国产精品自在自在app | 91视频在线免费看 | 成人精品在线 | 免费a v观看 | a√天堂资源 | 99精品国产aⅴ | 亚洲激情在线视频 | 国产va饥渴难耐女保洁员在线观看 | 九九视频在线播放 | 久久免费资源 | 国产永久免费高清在线观看视频 | 亚洲精品456在线播放 | 国产精品国产三级国产aⅴ无密码 | 亚洲综合在线五月 | 国产精品久久电影网 | 国产女人40精品一区毛片视频 | 国产免费又黄又爽 | 久久99精品久久久久久秒播蜜臀 | 日韩com| 激情av一区二区 | 国产精品美女久久久免费 | 91久久国产综合精品女同国语 | 国产伦精品一区二区三区无广告 | 五月天久久综合 | 青春草视频在线播放 | 成人在线观看影院 | 99婷婷狠狠成为人免费视频 | 免费观看性生交大片3 | 中文字幕日韩av | 久99久精品 | 久久久电影网站 | 国产一二区视频 | 国产精品一区二区三区免费看 | 成人免费视频免费观看 | 女人18精品一区二区三区 | 国产小视频免费在线网址 | 玖玖在线免费视频 | 在线播放91| 视频在线一区二区三区 | 9999亚洲| 91在线观看黄 | 亚洲国产wwwccc36天堂 | 天天视频亚洲 | 欧美视频日韩 | 国产91aaa | 综合网久久| 五月婷婷深开心 | 91九色porny蝌蚪主页 | www99精品| 国产精品一区二 | 成 人 黄 色 片 在线播放 | 免费av小说 | 中文字幕乱码日本亚洲一区二区 | 成人国产精品免费 | 午夜精品福利在线 | 精品久久久久久久久中文字幕 | 成人免费在线播放 | 国产又粗又硬又爽的视频 | 国产精品一区二区62 | 日韩在线看片 | 69av视频在线 | 四虎国产 | 免费在线观看午夜视频 | 久久久久免费精品国产 | 西西大胆免费视频 | 一本色道久久精品 | 99久久久久 | 国产 日韩 在线 亚洲 字幕 中文 | 黄色a一级片 | 精品国产伦一区二区三区免费 | 成人一级免费电影 | 怡红院av久久久久久久 | 亚洲免费精彩视频 | 久青草电影 | 欧美做受69 | 三级黄色免费片 | 免费人成在线观看 | 在线免费观看黄色av | av在线网站观看 | 99久热在线精品视频 | 久久夜夜爽 | 2020天天干夜夜爽 | 婷婷丁香狠狠爱 | 亚洲精品国产日韩 | 99久久夜色精品国产亚洲 | 国产在线高清视频 | 在线日韩av | 毛片的网址 | 99精品国产aⅴ | 国产精品一区二区三区久久 | 麻豆va一区二区三区久久浪 | 日本三级不卡视频 | 一区二区三区免费看 | 午夜.dj高清免费观看视频 | 成年人黄色免费网站 | 色婷婷一区 | 蜜臀av性久久久久蜜臀av | 91在线免费观看网站 | 亚洲精品伦理在线 | 欧美经典久久 | 久久私人影院 | 天天搞天天干天天色 | 日日干综合 | 在线观看免费av网站 | 亚洲精品视频网址 | 中文字幕人成不卡一区 | 国内精品国产三级国产aⅴ久 | 韩国av不卡| 91免费观看| 久久观看免费视频 | 人人爽影院 | 免费91在线 | av东方在线 | 天天综合网天天综合色 | 日韩av美女 | 91精品国产自产老师啪 | 国产麻豆精品传媒av国产下载 | 久久人人爽人人爽 | 五月婷婷中文字幕 | 国产黄色网 | www视频在线播放 | 亚洲经典精品 | 久久国产精彩视频 | 青草视频在线 | 亚洲最新av在线网站 | 国产精品大片在线观看 | 国产精品一区二区美女视频免费看 | 91视频链接 | 亚洲精品视频在线观看视频 | 美女黄频免费 | 国产黑丝一区二区三区 | 免费www视频 | 国产高清专区 | 特级西西444www大精品视频免费看 | 国产美女主播精品一区二区三区 | 少妇bbb好爽 | 草久电影 | 日韩视频在线观看免费 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 久久精品二区 | 一级片黄色片网站 | av在线亚洲天堂 | 亚洲国产成人高清精品 | 久久久久久久久免费视频 | 丁香激情视频 | 日韩免费不卡视频 | 久久精品中文字幕免费mv | 国产精品99久久免费黑人 | 狠狠婷婷 | 美女网站黄免费 | 激情网在线视频 | 粉嫩av一区二区三区四区 | 久久免费看片 | 黄网站免费看 | 日韩系列在线 | 色综合天天综合网国产成人网 | 国产人成一区二区三区影院 | 五月婷婷综合色拍 | 国产一级二级三级在线观看 | 伊人中文网 | 97超碰国产在线 | 日日干天天爽 | 91av在线看 | 婷婷综合电影 | 欧美va天堂va视频va在线 | 天天曰天天 | 国产午夜一级毛片 | 亚洲精品久久久久久久蜜桃 | 黄色成人av | 干综合网 | 射综合网 | 九九综合九九综合 | 亚洲精品成人av在线 | 亚洲91精品 | 日韩在线视频一区二区三区 | 国产一区二区三区网站 | 波多野结衣视频一区 | 国产精品小视频网站 | 日韩中文字幕在线看 | 欧美在线观看视频一区二区三区 | 久久97久久97精品免视看 | 麻豆影视在线免费观看 | 91麻豆免费版 | 丁香九月激情综合 | 亚洲国产人午在线一二区 | 97超碰人| 99久久精品免费看国产 | 久草网视频在线观看 | 视频一区二区在线观看 | 香蕉97视频观看在线观看 | 国产在线不卡一区 | 91成人免费观看视频 | 五月天婷婷视频 | 中文在线免费看视频 | 一区二区激情 | 在线观看免费黄视频 | 国产91av视频在线观看 | 色网免费观看 | 女人18片毛片90分钟 | 婷婷国产一区二区三区 | 成人av影视在线 | 欧美激情第八页 | 91在线播放综合 | 久久一久久 | 在线视频第一页 | 日韩.com | 国产成人精品久久二区二区 | 国产精品久久久久久久av电影 | 国产不卡精品视频 | 国产在线免费 | av片一区二区 | 中文字幕在线观看第一页 | 在线观看日韩国产 | 激情综合色综合久久综合 | 中文字幕成人 | 国产亚洲成人网 | 999久久| 香蕉视频18 | 亚洲天堂香蕉 | 欧美精品亚洲精品 | jizz欧美性9 国产一区高清在线观看 | 国产精品第一视频 | 久久精品久久久精品美女 | 午夜精品一二区 | 亚洲高清网站 | 中文字幕在线一区观看 | 精品嫩模福利一区二区蜜臀 | 天天插日日操 | 美女免费视频网站 | av福利电影 | 一区二区三区韩国免费中文网站 | 国产一区成人 | www.夜夜骑.com| 亚洲国产日韩欧美在线 | 欧美精品一区二区三区四区在线 | 欧美aaa大片 | 亚洲精品9 | 亚洲成a人片综合在线 | av成人黄色 | 精品亚洲欧美无人区乱码 | 91在线公开视频 | 免费在线观看一级片 | 黄色在线观看免费网站 | 亚洲精品在线资源 | 最新精品视频在线 | 国产又粗又猛又色又黄视频 | 欧美日韩不卡在线 | 精品国产一区二区三区四区vr | 精品欧美一区二区精品久久 | 夜夜爱av| 狠狠狠狠狠狠操 | 精品国产成人av | 深爱婷婷 | 国产亚洲精品日韩在线tv黄 | 91在线看视频 | 美女视频黄免费网站 | 毛片网站免费 | 日韩欧美高清在线观看 | 成人av地址 | 美女露久久 | 日韩在线视频二区 | 亚洲视频中文 | 99在线视频网站 | 久久99精品国产99久久 | 日韩免费视频在线观看 | 人人超在线公开视频 | 99视频一区 | 456免费视频| 久久久久久久久福利 | 黄色片网站av | 欧美最猛性xxxxx亚洲精品 | 黄色av成人在线观看 | 国产破处在线播放 | 欧美日韩精品二区第二页 | 国产资源网站 | 欧美国产日韩一区 | 国产 av 日韩| 久久色在线播放 | 国产中年夫妇高潮精品视频 | 在线观看自拍 | 伊人色综合久久天天网 | 亚州黄色一级 | 中文字幕日本在线观看 | 国产成视频在线观看 | 久久无码av一区二区三区电影网 | 一级欧美一级日韩 | 久久免费视频在线观看 | 高清av在线 | 国产精品久久久久久久久久99 | 中文av字幕在线观看 | 国产尤物在线观看 | 免费婷婷| 99在线高清视频在线播放 | 六月婷婷久香在线视频 | 久久久在线视频 | 久久精品波多野结衣 | 免费av高清 | 在线观看中文字幕一区 | 欧美日韩在线视频免费 | 精品伊人久久久 | 在线小视频你懂得 | 在线视频中文字幕一区 | 天天躁天天躁天天躁婷 | 这里只有精品视频在线观看 | 亚洲天堂自拍视频 | 国产成人av | 成人永久免费 | 伊人天天狠天天添日日拍 | 国产一级大片在线观看 | 久久你懂的 | 中文字幕在线观看三区 | 欧美韩国日本在线 | 波多野结衣在线观看一区二区三区 | a在线观看免费视频 | 国产一级视屏 | 超碰97人人干 | 国产精品av电影 | 日日夜夜91 | 日韩av播放在线 | 婷五月天激情 | 99九九99九九九视频精品 | 日本激情视频中文字幕 | 亚州国产精品 | 午夜性福利 | 国产亚洲一级高清 | 国产成本人视频在线观看 | 成人免费亚洲 | 久久综合免费视频 | 97国产超碰 | 精品影院一区二区久久久 | av专区在线 | 国内精品视频久久 | 一区二区三区免费在线观看视频 | 精品一区二区免费在线观看 | 国产精品久久一 | 日韩手机在线观看 | 91免费黄视频| 日本精品一区二区 | 久久免费成人精品视频 | 99在线热播精品免费 | 久草在线视频首页 | 亚洲区色 | 综合成人在线 | 91精品国产99久久久久 | 国产成人亚洲在线观看 | 久久精视频 | 色婷婷88av视频一二三区 | 国产成人性色生活片 | 色综合久久久久久久久五月 | 久久精品网址 | 亚洲精品99久久久久久 | 五月天.com | 成人黄色免费观看 | 久久久久久久久久久久久久av | 国产午夜一区二区 | 午夜av剧场| 久久三级视频 | 久久69精品久久久久久久电影好 | 久久高清免费视频 | 91成品人影院 | 丁香视频五月 | 欧美激情视频一区二区三区免费 | 久久99亚洲网美利坚合众国 | 国产精品久久久久久麻豆一区 | 黄色三级av | 精品国产一区二区三区四区在线观看 | www.69xx| 在线看黄色的网站 | 91九色蝌蚪 | 国产精品av久久久久久无 | 日韩精品久久久免费观看夜色 | 久久精品久久综合 | 久久99国产精品 | 国产69久久久欧美一级 | 亚洲人成人在线 | 国产不卡精品 | av综合站| 国际精品网 | 国产一区二区三区高清播放 | 91午夜精品 | 日韩久久久久 | 久久精品播放 | 国产一区二区播放 | 色婷婷97| 免费看国产视频 | 国产一二区视频 | 日本激情动作片免费看 | 欧美午夜寂寞影院 | 午夜美女福利 | 2019天天干夜夜操 | 天天操福利视频 | 国产精品成人一区二区 | 伊人天天色 | 国产精品美女在线观看 | 黄色大片av| 天天射射天天 | 中文字幕中文字幕中文字幕 | 欧美 亚洲 另类 激情 另类 | 久热av| 成人午夜精品久久久久久久3d | 成人黄色免费在线观看 | 亚洲精品动漫成人3d无尽在线 | 久久99欧美 | 国产视频精品在线 | 亚洲国产色一区 | 日日碰夜夜爽 | 18久久久久 | 一级免费看 | 99精品视频精品精品视频 | 免费进去里的视频 | 麻豆成人精品 | 2023国产精品自产拍在线观看 | 色综合久久中文字幕综合网 | 日韩av视屏 | 国产一区二区三区四区在线 | 久久tv| 国产麻豆电影在线观看 | 久久黄色小说视频 | 欧美三人交 | 综合黄色网 | 国产一区二区精品久久91 | 中文字幕一区二区三区在线播放 | 五月天激情视频在线观看 | 久久国产精品久久精品 | 免费观看一区 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 国产精品久久久久久久午夜 | 日日日日日 | 久操操| 国产日本亚洲高清 | 国产精品免费不卡 | 麻豆91在线播放 | 免费视频一区二区 | 黄色网免费 | 日韩高清成人在线 | 久久精品国产免费看久久精品 | 日韩av综合网站 | 欧美另类色图 | 精品影院一区二区久久久 | 69精品在线 | 99精品系列 | 亚洲高清视频在线播放 | 在线观看国产亚洲 | 最新日韩视频在线观看 | 国产丝袜美腿在线 | av色影院 | 欧美激情综合五月色丁香 | 欧美日韩高清免费 | 免费人做人爱www的视 | 91亚·色 | 色婷婷狠狠五月综合天色拍 | 偷拍视频一区 | 一级黄色毛片 | 天天做天天干 | 不卡的av在线播放 | 日日天天狠狠 | 天天综合操 | 亚洲九九九在线观看 | 色偷偷88888欧美精品久久久 | 日韩中文在线观看 | 亚洲人成精品久久久久 | 日韩和的一区二在线 | 精品1区2区| 又黄又爽又无遮挡的视频 | 成人黄大片视频在线观看 | 国产精品涩涩屋www在线观看 | 天天艹日日干 | 69精品在线观看 | 精品一二三四视频 | 久久久久国产成人免费精品免费 | 国产在线欧美在线 | 国产精品涩涩屋www在线观看 | 日韩一二区在线 | 超碰在线9| 99久久久国产精品免费99 | 日韩av成人免费看 | 久久免费公开视频 | 国产成人综合图片 | 欧美一级欧美一级 | 69国产盗摄一区二区三区五区 | 亚洲精品18p | 久久三级毛片 | 99久久精品一区二区成人 | 五月开心婷婷 | 午夜精品一区二区三区免费 | 国内精品美女在线观看 | 九色在线 | 亚洲精品美女久久久 | 精品不卡av | 91九色综合 | 91精品久久久久久综合乱菊 | 亚洲精品麻豆 | 香蕉成人在线视频 | 最新不卡av | 超碰夜夜 | 在线看91| 久久久久电影 | 欧美精品生活片 | 亚洲国产成人高清精品 | 亚洲美女在线国产 | 国产最新福利 | 91九色国产 | 婷婷国产在线观看 | 日韩黄色影院 | 免费高清看电视网站 | 五月天久久综合 | 精品久久国产一区 | 天堂网一区二区三区 | 日本在线观看黄色 | 亚洲自拍av在线 | 久久99视频精品 | 激情五月看片 | 久久99最新地址 | 欧美精品乱码99久久影院 | 日韩精品综合在线 | 国产精品久久久av久久久 | 4438全国亚洲精品观看视频 | 久久久精品国产免费观看同学 | 成 人 黄 色 片 在线播放 | 日日躁夜夜躁aaaaxxxx | 久久久综合电影 | 欧美一级久久久 | 国产一区91 | 91影视成人 | 久久精品久久精品久久精品 | 欧美视频日韩视频 | 一级做a爱片性色毛片www | 亚洲一区美女视频在线观看免费 | 久久呀| 日精品 | av丁香花| 日韩成人精品一区二区 | 中文字幕免费观看全部电影 | 日韩理论电影网 | 精品国产乱码久久久久久1区2匹 | 国产精品久久在线 | 91精品国产一区二区在线观看 | 精品国产乱码一区二区三区在线 | 久久久九色精品国产一区二区三区 | 日韩欧美高清一区二区 | 亚洲成人免费观看 | 国产一级二级在线观看 | 伊人久久av | av大全在线播放 | 国内精品免费 | 中午字幕在线 | 日韩在线视频播放 | 午夜视频导航 | 久久久高清一区二区三区 | 日日麻批40分钟视频免费观看 | 色a网 | 一区二区av| 欧美精品一区二区蜜臀亚洲 | 黄色免费视频在线观看 | 亚洲2019精品 | 成人午夜免费福利 | 91麻豆精品国产91久久久久久 | 99视频在线播放 | 日日干天天 | 国内成人精品2018免费看 | 深夜国产福利 | 日韩高清一 | 成年人免费在线观看 | 国产系列 在线观看 | 亚洲高清91 | 国产精品a级 | 国产视频1 | 国产精品日韩在线观看 | 手机在线看片日韩 | 国产精品一区二区三区四区在线观看 | 91亚色免费视频 | 日本公妇色中文字幕 | 正在播放一区 | 国产免费中文字幕 | 免费av网站在线 | 久久国产精品视频 | 91色蜜桃| 色小说av| 欧美最新大片在线看 | 在线观看国产一区 | 国产成人精品a | 亚洲欧美乱综合图片区小说区 | 最新日韩在线观看 | 夜夜爱av| 色在线中文字幕 | 国产一区二区在线免费播放 | 久久久久久看片 | 日韩欧美在线国产 | 免费观看黄 | 国产精品久久久久高潮 | 一本大道久久精品懂色aⅴ 五月婷社区 | 久久国产午夜精品理论片最新版本 | 欧美日韩视频在线播放 | 黄色天堂在线观看 | 国产精品乱码一区二三区 | 日韩久久午夜一级啪啪 | 欧美 日韩 国产 成人 在线 | 精品亚洲欧美一区 | 在线免费性生活片 | 久久久久日本精品一区二区三区 | 免费色视频网站 | 日韩二区在线 | 免费看的黄色 | 五月天婷婷在线观看视频 | 国产网红在线观看 | 亚洲精品久久久久久中文传媒 | 中文字幕免费观看视频 | 99r在线 | 亚洲国产美女久久久久 | 超碰97国产 | 久久国产一区 | 成人在线观看资源 | 中文国产字幕 | 国产精品男女 | 精品99999 | 日韩在线观看一区二区三区 | 97超碰免费| 久久久久久久网站 | 最新免费中文字幕 | 久久久久欧美精品 | 4hu视频| 中文字幕在线播放日韩 | 毛片99 | 波多野结衣一区三区 | 国产高清免费av | 成人久久18免费网站图片 | 黄色成人av在线 | 中文字幕亚洲在线观看 | 超碰97人人射妻 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 久久久999 | 美女福利视频在线 | 久久在线精品视频 | 亚洲精品色婷婷 | 欧美三级高清 | 国产一区二区不卡视频 | 男女啪啪免费网站 | 久久久久久看片 | 成年人黄色大全 | 激情欧美丁香 | 成 人 黄 色 视频 免费观看 | 欧美日韩亚洲在线观看 | 久久精品国产精品亚洲 | 91精品视频免费 | 91片黄在线观看动漫 | 天天插天天射 | 综合中文字幕 | 在线视频黄 | 欧美色噜噜噜 | 日韩免费观看一区二区 | 五月香视频在线观看 | 九九九在线观看 | 尤物97国产精品久久精品国产 | 99久免费精品视频在线观看 | 日韩a级黄色片 | 91在线精品视频 | 99精品福利视频 | 国产亚洲永久域名 | av东方在线| 狠狠色狠狠色综合系列 | 在线v片免费观看视频 | 黄影院| 精品一区欧美 | 国产精品2019 | 国产精品免费av | 国产永久免费高清在线观看视频 | 国产精品 亚洲精品 | av解说在线观看 | 亚洲精品xx | 人交video另类hd | 亚洲黄色一级视频 | 日韩欧美在线视频一区二区 | 麻豆视频在线免费观看 | 久久这里只有精品1 | 国产亚洲精品v | 91在线视频精品 | 丁香综合| 黄色美女免费网站 | 色先锋av资源中文字幕 | 夜色资源网 | 久草视频免费 | 免费日韩高清 | 国产美女视频免费观看的网站 | 夜夜操天天摸 | 开心激情五月婷婷 | 青青河边草观看完整版高清 | 在线观看视频色 | 日日噜噜噜噜夜夜爽亚洲精品 | 国内精品久久久久影院一蜜桃 | 五月婷婷色播 | 天天操夜夜想 | 黄色在线网站噜噜噜 | 久久久 精品 | 欧美在线视频免费 | 天天天操天天天干 | 日韩精品三区四区 | 国产精品久久久久久久久久久久久 | 成年人视频在线免费 | 成人h动漫在线看 | 国产小视频你懂的 | 久久韩国免费视频 | 色婷婷av一区 | 午夜三级毛片 | 国产美女被啪进深处喷白浆视频 | 欧美在线你懂的 | 国产在线免费 | 五月综合在线观看 | 91av中文字幕 | 亚洲激情在线观看 | 狂野欧美激情性xxxx欧美 | 91在线免费观看国产 | 国产美腿白丝袜足在线av | 视频成人永久免费视频 | 蜜桃传媒一区二区 | 成人国产精品一区二区 | 久久九九网站 | 夜夜躁狠狠躁 | 狠狠狠狠狠狠 | 日本黄色免费在线 | 免费高清国产 | 在线视频欧美精品 | 欧美日韩国产一二三区 | 久久视频 | a电影在线观看 | 久久精品99国产 | 天天狠狠 | 亚洲第一区在线播放 | 欧美日韩另类在线 | 国产精品成久久久久三级 | 国产精品久久久久久一区二区三区 | 久久在线影院 | 亚洲精品在线观看视频 | 国产欧美在线一区 | 亚洲综合小说电影qvod | 日本公妇在线观看高清 | 国产高清视频在线 | 日韩欧美在线观看一区二区三区 | 国产99久久九九精品 | 美女久久久久久久 | 青青啪| 高清视频一区二区三区 | 日日干干 | 免费大片av | 在线日韩中文字幕 | 91九色视频在线观看 | 最近更新好看的中文字幕 | 欧美在线视频第一页 | 九九热av | 日韩高清dvd | 欧日韩在线视频 | 久久久精品成人 | 欧美日韩国产一二 | 国产超碰在线观看 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 日韩免费区 | 亚洲japanese制服美女 | 在线免费高清视频 | 国产精品va在线播放 | 91九色视频在线播放 | 中文在线中文资源 | 99精品视频99 | 国产色拍拍拍拍在线精品 | 日韩久久电影 | 久草在线费播放视频 | 91传媒免费在线观看 | 成人av一区二区兰花在线播放 | 亚洲精选国产 | 色婷婷精品 | 久久免费资源 | 日日干 天天干 | 国内精品美女在线观看 | 精品视频在线观看 | 国产手机av在线 | 中文字幕在线播放一区二区 | 91精品国产自产在线观看 | 在线小视频| 99久久99精品| 不卡的一区二区三区 | 九九视频这里只有精品 | 超碰97久久 | 亚洲在线黄色 | 91av中文字幕 | 99热高清| 中文字幕在线成人 |