4

我想使用状态方法,但我不明白它是如何工作的。有人可以给我看一个使用示例吗?

EventHandler < SvnStatusEventArgs > statusHandler = new EventHandler<SvnStatusEventArgs>(void(object, SvnStatusEventArgs) target);
client.Status(path, statusHandler);
4

3 回答 3

3

好吧,它会像svn status命令一样工作: http: //svnbook.red-bean.com/en/1.0/re26.html

您将获得泵送至 EventHandler 的文件列表:

using(SvnClient client = /* set up a client */ ){
    EventHandler<SvnStatusEventArgs> statusHandler = new EventHandler<SvnStatusEventArgs>(HandleStatusEvent);
    client.Status(@"c:\foo\some-working-copy", statusHandler);
}

...

void HandleStatusEvent (object sender, SvnStatusEventArgs args)
{
    switch(args.LocalContentStatus){
        case SvnStatus.Added: // Handle appropriately
            break;
    }

    // review other properties of 'args'
}
于 2010-03-15T11:25:14.107 回答
3

或者,如果您不介意内联代表:

using(SvnClient client = new SvnClient())
{
   client.Status(path,
                 delegate(object sender, SvnStatusEventArgs e)
                 {
                    if (e.LocalContentStatus == SvnStatus.Added)
                       Console.WriteLine("Added {0}", e.FullPath);
                 });
}

请注意,SharpSvn 函数的委托版本总是比修订返回集合快一点(微小),因为这种方法允许将最少量的信息编组到托管世界。无论如何,您都可以使用 Svn*EventArgs.Detach() 来编组所有内容。(这是 .GetXXX() 函数在内部执行的操作)

于 2010-03-15T12:39:34.777 回答
1

内联委托版本对我有用,但EventHandler<T>直到我将类型设置为EventHandler<SvnStatusEventArgs>.

于 2011-08-03T18:31:10.513 回答