系列介绍

【五分钟的dotnet】是一个利用您的碎片化时间来学习和丰富.net知识的博文系列。它所包含了.net体系中可能会涉及到的方方面面,比如c#的小细节,aspnetcore,微服务中的.net知识等等。
5min+不是超过5分钟的意思,”+”是知识的增加。so,它是让您花费5分钟以下的时间来提升您的知识储备量。

正文

前段时间在阅读aspnet core的源代码中,发现了一个叫做changetoken的静态类。它的使用大概是这个样子:

public actiondescriptorcollectionprovider(
            ienumerable<iactiondescriptorprovider> actiondescriptorproviders,
            ienumerable<iactiondescriptorchangeprovider> 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 中的更改令牌检测更改》。但是该篇文章我个人觉得有点偏重于讲使用,而对原理比较淡化。这怎么能满足得了我们程序员的探索欲