メソッドのフック
Posted feedbacks - C#
C#ってデフォルト引数使えないの初めて知った・・・。 仕方ないのでnullかどうかで判別
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | using System;
delegate void func();
class OpenFile
{
public OpenFile() { }
public void readFile(string filename,
func begin,
func end)
{
if (begin != null)
begin();
else
dummy();
try
{
Console.WriteLine(
new System.IO.StreamReader(
filename
).ReadToEnd()
);
}
catch
{
}
if (end != null)
end();
else
dummy();
}
private void dummy() { Console.WriteLine("dummy!"); }
public void Begin() { Console.WriteLine("Begin!"); }
public void End() { Console.WriteLine("End!"); }
}
class Program
{
static void Main(string[] args)
{
OpenFile of = new OpenFile();
string filename = @"C:\a.txt";
of.readFile(filename, null, null);
Console.WriteLine();
of.readFile(filename, of.Begin, null);
Console.WriteLine();
of.readFile(filename, null, of.End);
Console.WriteLine();
of.readFile(filename, of.Begin, of.End);
Console.WriteLine();
}
}
|


todogzm
#6017()
Rating0/8=0.00
例えば、あるクラスのあるメソッドを実行する前に他の処理を呼びたい(例えばログやトランザクション開始など)。 また、そのメソッドの終了後にも何らかの後処理を呼びたい(トランザクション終了など)。
そのような、メソッドに対するフック処理を書いてください。 ライブラリを使用してメソッドのフックを実現した場合は ライブラリの名前を紹介してくれると助かります。
[ reply ]