我正在尝试为自己创建一个日志插件,我希望有一个方法,我用不同的参数重载它。
关键是,它需要可以添加多个字符串,我将在不同的行上打印。我喜欢使用params
的想法,这样我每次都不需要添加string[] { strings here }
。
我目前的问题是Log.L()
方法不会触发第一种方法,而是第二种方法,这有点意义。
如何在保留params
?
Log.L("line1", "line2", "line3");
public static class Log
{
public static void L(params string[] message)
{
Write(LogType.Log, message);
}
public static void L(string location, params string[] message)
{
Write(LogType.Log, message, false, location);
}
}
答案 0 :(得分:0)
它总是假设第一个字符串是location
所以,只需使用第二个重载:
public static void L(string location, params string[] message)
{
Write(LogType.Log, message, false, location);
}
当位置不可用时,您可以简单地传递null或空字符串,并在方法中处理它。
答案 1 :(得分:0)
您可以创建两个类并使用它们来区分两个重载。如果你愿意,你甚至可以让一个类继承另一个类。
public class LoginWithMessages {
public string[] Messages {get; set;}
}
public class LoginWithLocation : LoginWithMessages {
public string Location {get; set;}
}
然后您的方法签名将是:
public static void L(LoginWithMessages loginMessage)
public static void L(LoginWithLocation loginLocation)