status メソッドを使用したいのですが、その仕組みがわかりません。誰かが私に使用例を見せてもらえますか?
EventHandler < SvnStatusEventArgs > statusHandler = new EventHandler<SvnStatusEventArgs>(void(object, SvnStatusEventArgs) target);
client.Status(path, statusHandler);
または、インライン デリゲートを気にしない場合:
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() 関数が内部で行うことです)
まあ、それは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'
}
インラインデリゲートバージョンは機能しましたがEventHandler<T>
、タイプをに設定するまでバージョンは機能しませんでしたEventHandler<SvnStatusEventArgs>
。