c# - 参数数量可变的扩展方法

标签 c# winforms parameters extension-methods

我已经创建了这个具有扩展方法的帮助器类 RichTextBoxHelper,我想编写另一个 WriteLine 方法或重写这个方法(哪个解决方案最好)以便能够在它下面显示的函数中使用它。谢谢。

public static class RichTextBoxHelper
{
    public static void WriteLine(this RichTextBox txtLog, object line)
    {
        txtLog.AppendText(line + Environment.NewLine);
    }
}

private void selectToolStripMenuItem_Click(object sender, EventArgs e)
{
    var vehicles = new List<Tuple<string, string, int>>
    {
        Tuple.Create("123","VW",1999),
        Tuple.Create("234","Ford",2009),
        Tuple.Create("567","Audi",2005),
        Tuple.Create("678","Ford",2003),
        Tuple.Create("789","Mazda",2003),
        Tuple.Create("999","Ford",1965)
    };

    var fordCars = vehicles.Where(v => v.Item2 == "Ford")
                         .Select(v => new Car
                         {
                             VIN = v.Item1,
                             Make = v.Item2,
                             Year = v.Item3
                         });

    foreach (var item in fordCars)
        txtLog.WriteLine("Car VIN:{0} Make:{1} Year:{2}", item.VIN, item.Make, item.Year);                                    
} 

最佳答案

是的,这完全有可能。它称为方法重载,它在扩展方法类上的工作方式与普通类一样好。

新方法所需的签名是:

public static void WriteLine(
    this RichTextBox txtLog, 
    string format, 
    params object[] args)
{
    // ...
}

只要把它和你的另一个放在同一个类中,你就可以适本地使用它们。

或者,您可以通过以下方式调用现有方法:

txtLog.WriteLine(
    String.Format(
        "Car VIN:{0} Make:{1} Year:{2}", 
        item.VIN, 
        item.Make, 
        item.Year));         

关于c# - 参数数量可变的扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25040405/

相关文章:

c# 计时器不准确?

c# - Restful Web 服务中的 URL

c# - 更新单个 ListViewItem 的文本时如何防止 ListView 闪烁?

vb.net - 如何阻止我的工具条菜单项出现在任务栏中?

c# - 尝试检索实体时,L2S 调用导致有关 int 的空分配的异常

c# - 在 API 中调用另一个 API 会超时

c# - 为什么 WinForm Form.FormClosed 事件不从窗体持有者触发?

javascript - 在函数参数中使用变量,带或不带 Jquery

c# - 编写 PowerShell Cmdlet 时如何处理路径?

delphi - Delphi 中的无类型/无类型参数