如何从c#中的同一方法返回字符串以及IEnumerable <t>?

时间:2015-07-10 10:46:12

标签: c# .net c#-4.0 extension-methods overloading

  

我有一个通用方法可以执行某些操作并且想要   将结果返回为字符串或IEnumerable

  public IEnumerable<T> MyResult(string input)
        {
do something return string based on some case or return IEnumerable<T>
}

任何帮助我如何在一个方法中实现这一点,并且hpw我是否保持返回类型

2 个答案:

答案 0 :(得分:3)

首先:一个方法不能有多种返回类型。

即使这是糟糕的设计,你也可以(A)添加一个out参数或(B)创建一个包含可枚举和字符串的DTO并返回它。

(A):

public IEnumerable<T> MyResult(string input, out string output)
{
    // do something 
}

(B):

public MyDTO MyResult(string input)
{
    // do something 
}

public class MyDTO 
{
    public IEnumerable<T> resultAsEnumerable {get; set;}

    public string resultAsString {get; set;}    
}

答案 1 :(得分:1)

您可以使用object作为函数的返回类型,然后根据输入返回stringIEnumerable<T>。像这样:

public object MyResult<T>(string input)
{
    if (true)
        return "string";
    else
        return return new List<T>() { default(T) };
}