Tag: callermembername

当不能简单地过载时,混合可选参数和参数

与此问题类似,我想将可选参数与params关键字混合,这当然会产生歧义。 不幸的是,创建重载的答案不起作用,因为我想利用调用者信息属性,如下所示: public void Info(string message, [CallerMemberName] string memberName = “”, [CallerLineNumber] int lineNumber = 0, params object[] args) { _log.Info(BuildMessage(message, memberName, lineNumber), args); } 在没有可选参数的情况下创建重载会更改调用站点,从而阻止这些特定参数正常工作。 我找到了一个几乎可以工作的解决方案(尽管很难看): public void Info(string message, object arg0, [CallerMemberName] string memberName = “”, [CallerLineNumber] int lineNumber = 0) { _log.Info(BuildMessage(message, memberName, lineNumber), arg0); } public void Info(string message, object arg0, […]