challenge メソッドのフック

例えば、あるクラスのあるメソッドを実行する前に他の処理を呼びたい(例えばログやトランザクション開始など)。 また、そのメソッドの終了後にも何らかの後処理を呼びたい(トランザクション終了など)。

そのような、メソッドに対するフック処理を書いてください。 ライブラリを使用してメソッドのフックを実現した場合は ライブラリの名前を紹介してくれると助かります。

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();  
    }
}

Index

Feed

Other

Link

Pathtraq

loading...