将包装器添加到重载的函数

Cev*_*Cev 1 c#

假设您有一个时间戳功能,然后想要创建一个新功能来组合您的时间戳Console.WriteLine(),例如

public static void Write(string msg)
    {
        WriteTimeStamp();
        Console.WriteLine( msg );
    }
Run Code Online (Sandbox Code Playgroud)

但是该WriteLine()方法有18个左右的重载,这些重载不会反映在包装函数的签名中.你如何让包装器获取非字符串并将它们传递给WriteLine()

Dav*_*d M 5

您可能想要params关键字,或者我可能会误解您的问题:

public static void Write(string msg, params object[] args)
{
    WriteTimeStamp();
    Console.WriteLine(msg, args);
}
Run Code Online (Sandbox Code Playgroud)

这允许您指定任何类型的0个或多个附加参数,并且Console.WriteLine(string, params object[])将调用重载,它几乎处理所有其他参数.