Trello.Net:如何获取Actions数据?

时间:2014-04-25 23:31:27

标签: c# trello trello.net

我可以获取卡片的操作列表。但是,动作卡只有有限的信息,那么我该如何获得动作的实际内容呢?

var actionList = trello.Actions.ForCard(card);
foreach (TrelloNet.Action action in actionList)

当我浏览列表中的每个操作时,我只能看到发起操作,日期,成员和操作类型的成员(例如TrelloNet.UpdateCardAction)。我怎样才能了解行动的实际情况,例如:把这张卡转移到了上面?

如果这不是获取实际操作信息的正确方法,请指出正确的逻辑路径。

谢谢,

1 个答案:

答案 0 :(得分:1)

每种类型的操作都是Action类的子类。子类有一个名为Data的属性,其中包含该类型操作的特定信息。

例如,如果您想要打印一块板的所有创建卡操作,您可以这样做:

var board = trello.Boards.WithId("a board id");
foreach (var action in trello.Actions.ForBoard(board).OfType<CreateCardAction>())
{
    Console.WriteLine(action.Date + " " + action.Data.Card.Name);
}

这将从trello获取所有电路板操作,然后在内存中过滤。出于性能原因,您可以告诉Trello.NET只通过传递一个附加参数来询问特定的操作类型:

foreach (var action in trello.Actions.ForBoard(board, 
    new[] { ActionType.CreateCard }).OfType<CreateCardAction>())
{
    Console.WriteLine(action.Date + " - " + action.Data.Card.Name);
}

由于trello可能会有很多动作使用分页。您可以传递Paging参数来告诉trello页面索引和页面大小。以下表示每个页面是100个操作,您需要第一页(0)。

foreach (var action in trello.Actions.ForBoard(board, 
    new[] { ActionType.CreateCard }, 
    paging: new Paging(100, 0)).OfType<CreateCardAction>())
{
    Console.WriteLine(action.Date + " - " + action.Data.Card.Name);
}

有一种名为AutoPaged()的扩展方法可以帮助进行分页。添加使用声明...

using TrelloNet.Extensions;

...并使用AutoPaged()。 Trello.NET将根据需要自动获取新页面。

foreach (var action in trello.Actions.AutoPaged().ForBoard(board, 
    new[] { ActionType.CreateCard }).OfType<CreateCardAction>())
{
    Console.WriteLine(action.Date + " - " + action.Data.Card.Name);
}

注意:已经有一段时间了,因为新的操作类型被添加到Trello.NET中,因此可能会有新的操作类型无法识别...