如何通过不同的功能发送文本?

时间:2012-04-23 05:57:25

标签: c# .net delegates

我想用这样的日志函数创建一个c#库:

class MyLogClass
{
    public void log(string format, params object[] args)
    {

        string message = string.Format(format, args);

        // custom function
        log_to_file(message); // or log_to_db() or log_to_txtBox()

    }
}

我们的想法是使用log_to_file(),log_to_db()或log_to_txtBox()来根据需要更改函数。

我在考虑使用第三个参数(在格式之前)作为代表来表示自定义函数,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

使用委托,您可以编写如下内容:

class MyLogClass
{
    public static void Log(Action<string> outputAction, string format,
                           params object[] args)
    {
        string message = string.Format(format, args);
        outputAction(message);
    }
}

请注意, args参数后参数不能,因为后者是参数数组(由{{1}表示}关键字) - 参数数组只能作为声明中的最后一个参数出现。

或者,您可以在创建类的实例时设置操作:

params