1. 程式人生 > >【5min+】 一個令牌走天下!.Net Core中的ChangeToken

【5min+】 一個令牌走天下!.Net Core中的ChangeToken

## **系列介紹** 【五分鐘的dotnet】是一個利用您的碎片化時間來學習和豐富.net知識的博文系列。它所包含了.net體系中可能會涉及到的方方面面,比如C#的小細節,AspnetCore,微服務中的.net知識等等。 5min+不是超過5分鐘的意思,"+"是知識的增加。so,它是讓您花費5分鐘以下的時間來提升您的知識儲備量。 ## **正文** 前段時間在閱讀AspNet Core的原始碼中,發現了一個叫做`ChangeToken`的靜態類。它的使用大概是這個樣子: ```csharp public ActionDescriptorCollectionProvider( IEnumerable actionDescriptorProviders, IEnumerable actionDescriptorChangeProviders) { _actionDescriptorProviders = actionDescriptorProviders .OrderBy(p => p.Order) .ToArray(); _actionDescriptorChangeProviders = actionDescriptorChangeProviders.ToArray(); //here!! ChangeToken.OnChange( GetCompositeChangeToken, UpdateCollection); } ``` 回想起來,這個東西我好像已經不止看到它一次兩次了,在`Microsoft.Extensions.FileProviders`包裡面也有發現它的身影。迷惑了很久之後,今天總算可以找個機會來扒一扒它,看看它到底是一個什麼東西。 其實,`ChangeToken`在微軟官方的AspNet Core教程文件中是有專門介紹它的文章:[《使用 ASP.NET Core 中的更改令牌檢測更改》](https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/change-tokens?view=aspnetcore-3.1)。但是該篇文章我個人覺得有點偏重於講使用,而對原理比較淡化。這怎麼能滿足得了我們程式設計師的探索欲