【5min+】 一個令牌走天下!.Net Core中的ChangeToken
阿新 • • 發佈:2020-03-17
## **系列介紹**
【五分鐘的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)。但是該篇文章我個人覺得有點偏重於講使用,而對原理比較淡化。這怎麼能滿足得了我們程式設計師的探索欲