【发布时间】:2011-01-06 23:37:33
【问题描述】:
假设我们正在尝试编写一个辅助扩展方法来为 asp.net 添加单元格。 Asp.net TableCell 控件只有一个默认构造函数,在处理高度自定义的数据时可能会很麻烦(忽略此解决方案与问题无关的基本缺陷)。
多晶型溶液
public static void AddCell(this Table table, object cell) {
TableCell tableCell;
if (cell is TableCell) {
tableCell = (TableCell)cell;
} else if (cell is WebControl) {
tableCell = new TableCell();
tableCell.Controls.Add((WebControl)cell);
} else {
tableCell = new TableCell();
tableCell.Text = cell.ToString();
}
table.Rows[table.Rows.Count - 1].Cells.Add(tableCell);
}
问题
这会更好地实现为泛型方法还是多个方法重载?
【问题讨论】:
-
您的“多态”解决方案不是多态的。
-
当你最关心对象的字符串表示时,它们都覆盖了 ToString 成员。不是一般意义上的多态,我同意。
标签: c# oop generics polymorphism overloading