簡體   English   中英

每當在C#中調用方法時,是否有一種通用的方法來調用另一個方法

[英]Is there a generic way to call another method whenever a method is called in C#

我有一個像這樣的方法:

public Something MyMethod()
{
    Setup();

    Do something useful...

    TearDown();

    return something;
}

Setup和TearDown方法位於基類中。

我遇到的問題是我必須使用Setup()和TearDown()方法調用一遍又一遍地編寫這種類型的方法。

編輯:這個方法的棘手部分是“做一些有用的東西......”僅適用於此方法。 這個部分對我創建的每個方法都不同。

另外,我可以將MyMethod2,MyMethod3放在一個類中。 在所有情況下,我想運行設置和拆解

有沒有一種優雅的方式來做到這一點,而不必每次都寫這個?

也許我是妄想,但是這是一種向方法添加屬性並攔截方法調用的方法,所以我可以在調用之前和之后做一些事情?

只需在抽象基類中實現此方法,如下所示:

public Something MyMethod()
{
    Setup();

    DoSomethingUsefull();

    TearDown();

    return something;
}

protected abstract DoSomethingUsefull();

現在,您只需要覆蓋繼承類中的一個方法 - DoSomethingUsefull()

這是模板方法模式

像這樣使用泛型lambdas委托

public SomeThing MyMethod()
{
    return Execute(() =>
    {
        return new SomeThing();
    });
}


public T Execute<T>(Func<T> func)
{
    if (func == null)
        throw new ArgumentNullException("func");

    try
    {
        Setup();

        return func();
    }
    finally
    {
        TearDown();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM