Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-使用不同类型的对象作为函数参数_C# - Fatal编程技术网

C#-使用不同类型的对象作为函数参数

C#-使用不同类型的对象作为函数参数,c#,C#,我正在编写一个解析JSON并可能返回不同类型对象的函数。 比如说,我正在解析一个bird-json,希望返回一个bird对象,然后是tiger-json,希望得到一个tiger对象 我该怎么做?我应该使用动态对象吗?如果这是答案,如何解决 我不想让我想从中得到的每种类型的对象的逻辑过载 提前感谢, Ariel为了防止代码膨胀,您可以实例化您的动物对象: 您正在使用JSON.NET吗?无论如何,泛型似乎是正确的答案。大概是这样的: public T CreateAnimal<T>(st

我正在编写一个解析JSON并可能返回不同类型对象的函数。 比如说,我正在解析一个bird-json,希望返回一个bird对象,然后是tiger-json,希望得到一个tiger对象

我该怎么做?我应该使用动态对象吗?如果这是答案,如何解决

我不想让我想从中得到的每种类型的对象的逻辑过载

提前感谢,


Ariel

为了防止代码膨胀,您可以实例化您的动物对象:


您正在使用JSON.NET吗?无论如何,泛型似乎是正确的答案。大概是这样的:

public T CreateAnimal<T>(string json) {
    return JsonConvert.DeserializeObject<T>(json);
}
Tiger t = CreateAnimal<Tiger>(tigerJson);
public T CreateAnimal(字符串json){
返回JsonConvert.DeserializeObject(json);
}
请注意,为了使用它,您必须提前知道json中需要哪种类型的对象,因此您可以这样调用它:

public T CreateAnimal<T>(string json) {
    return JsonConvert.DeserializeObject<T>(json);
}
Tiger t = CreateAnimal<Tiger>(tigerJson);
Tiger t=CreateAnimal(tigerJson);

我想您应该看看,您知道调用该方法时希望返回的对象类型吗?@astander是的!我肯定也会使用泛型。可能只有一个解析方法。是的,我知道,jmcilhinneyThank你是dvlsg,我会尝试一下,让你知道我应该在CreateAnimal函数中使用T.GetType()来发现T的类型吗?可能。我可以问一下,您正在使用什么来解析JSON,或者您是否正在尝试自己编写解析代码?如果您正在使用(我强烈推荐),那么对JsonConvert.DeserializeObject的调用将从JSON字符串中获取所有匹配的属性,并将它们放在对象上——在本例中是Tiger对象。