我需要能够调用一个方法并传入一个未知类型的对象,然后调用正确的重载。object
我还需要一个接受作为其参数类型的默认实现
。我所看到的是默认重载是唯一被使用过的重载。
这是我正在尝试做的事情的要点:
class Formatter
{
private object Value;
public Formatter(object val){
Value = val;
}
public override string ToString()
{
return Format(Value);
}
private string Format(object value)
{
return value.ToString();
}
private string Format(DateTime value)
{
return value.ToString("yyyyMMdd");
}
}
好的,到目前为止一切顺利。现在我希望能够做到这一点:
public static class FancyStringBuilder()
{
public static string BuildTheString()
{
var stringFormatter = new Formatter("hello world");
var dateFormatter = new Formatter(DateTime.Now);
return String.Format("{0} {1}", stringFormatter, dateFormatter);
}
}
结果FancyStringBuilder.BuildTheString()
是"hello world 2012-12-21 00:00:00.000"
,当我预期"hello world 20121221"
问题是DateTime
没有调用接受 a 的重载,而是默认为接受 a 的重载object
。 如何在不使用凌乱的 switch 语句的情况下调用正确的方法?