我有以下重载方法:
public string GetName(object obj)
{
return obj.ToString();
}
public string GetName(CustomClass cc)
{
return cc.Name + " - " + cc.Description;
}
现在,如果我使用无类型的 IEnumerable 调用该方法,该方法包含 CustomClass,则调用 GetName(object obj),为了解决此问题,我修改了如下方法:
public string GetName(object obj)
{
if (obj is CustomClass)
return GetName(obj as CustomClass);
return obj.ToString();
}
我认为编写 20 条 IF 语句并捕捉所有其他可能性相当烦人,有没有更简单的方法来使用无类型的 IEnumerable 枚举调用正确的重载?
下面是调用 GetName(object obj) 的代码:
IEnumerable rawData = GetData(); //DataBase method that fetches a CustomClass
foreach (var rawDataItem in rawData)
{
Debug.Print(GetName(rawDataItem)); //calls the GetName(object obj) overload
}
请不要告诉我从我的 CustomClass 覆盖 ToString,帮我解决这个方法调用问题。