如果我有一个功能
public IEnumerable<string> GetStrings()
{
return new string[]{"all","my","strings"};
}
有什么方法可以确定&#34;真实&#34;返回值的类型(string [])?反思给了我:
Name: "IEnumerable`1"
Namespace: "System.Collections.Generic"
FullName: "System.Collections.Generic.IEnumerable`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"
最终目标是实例化此类型的对象,将其序列化并用作api发现的示例。
答案 0 :(得分:2)
这很容易。
var result = GetStrings();
var returnType = result.GetType();
如果不调用方法,就无法获得真正的返回类型。如果方法是这样的,该怎么办?
Random random = new Random();
public IEnumerable<string> GetStrings()
{
var randomValue = random.Next();
if (randomValue % 5 == 3)
return new string[] { "all", "my", "strings" };
else if (randomValue > 15)
return new List<String>() { "all", "my", "strings" };
else if (randomValue > 25)
return new HashSet<String>() { "all", "my", "strings" };
return null;
}
答案 1 :(得分:1)
反射在这里没有帮助,它只能告诉你该方法返回的签名是什么(在你的情况下为IEnumerable<string>
)。
找出的一种方法是调用方法并检查返回的对象
var result = myInstance.GetString();
Console.WriteLine(result.GetType()); // System.String[]