如何将Manatee.Trello与多个用户帐户一起使用?

时间:2017-11-30 09:28:33

标签: c# .net trello manatee.trello

我一直在尝试以下方法来检索数据:

    void InitializeTrello()
    {
        TrelloConfiguration.Serializer = new ManateeSerializer();
        TrelloConfiguration.Deserializer = new ManateeSerializer();
        TrelloConfiguration.JsonFactory = new ManateeFactory();
        TrelloConfiguration.RestClientProvider = new Manatee.Trello.WebApi.WebApiClientProvider();
        TrelloConfiguration.ThrowOnTrelloError = true;
    }

    T DownloadDataFromTrello<T>(TrelloAccount account, Func<T> func)
    {
        TrelloConfiguration.Cache.Clear();
        TrelloAuthorization.Default.AppKey = account.AppKey;
        TrelloAuthorization.Default.UserToken = account.UserToken;
        T result = func();
        TrelloProcessor.Flush();
        return result;
    }

使用不同的DownloadDataFromTrelloAppKey参数调用方法UserToken几次。尽管在函数内部调用了TrelloConfiguration.Cache.Clear(),但每次调用都会收到相同的数据。

我想使用库而不使用卸载静态类的脏技巧并保留延迟加载功能。有没有人知道如何正确使用这个库与多个用户帐户?

1 个答案:

答案 0 :(得分:0)

所有实体构造函数都采用第二个参数:TrelloAuthorization,默认为TrelloAuthorization.Default。实体实例在其整个生命周期内使用此授权。

var customAuth = new TrelloAuthorization
{
    AppKey = "your app key",
    UserToken = "a user's token"
}
var card = new Card("card id", customAuth);

默认缓存仅将实体ID视为密钥,因此,即使您更改了默认授权,如果系统从缓存中提取它们,您也会获得相同的实例(使用旧的身份验证)(例如,卡是作为List.Cards枚举的一部分下载。如果通过构造函数显式创建实体(如上所述),则新实体将添加到缓存中,但只返回第一个实体,因为它仅与ID匹配。

要将auth视为密钥匹配,我必须更新默认缓存或公开auth,以便您可以编写自己的缓存并设置TrelloConfiguration.Cache属性。我现在不确定自己喜欢哪个。

使用自定义身份验证(可能与定期清除缓存相结合)是您最好的选择。如果这是您想要的功能,请随时创建一个问题或告诉我。