【问题标题】:How To Pass Different Objects to same Function in C#C#中如何将不同的对象传递给同一个函数
【发布时间】:2013-08-11 09:03:43
【问题描述】:

我有 10 个不同的课程,但以下两个是为了这个问题的目的:

public class Car
{
    public int CarId {get;set;}
    public string Name {get;set;}
}

public class Lorry
{
    public int LorryId {get;set;}
    public string Name {get;set;}
}

现在我有一个类似的功能

public static object MyFunction(object oObject, string sJson)
{
    //do something with the object like below 
    List<oObject> oTempObject= new List<oObject>();
    oTempObject = JsonConvert.DeserializeObject<List<oObject>>(sJson);
    return oTempObject;
}

我想要做的是将我创建的对象(如下面的 (oCar))传递给函数。

Car oCar = new Car();

我的问题是如何将不同类型的对象传递给同一个函数?

【问题讨论】:

  • 您也应该阅读这篇文章 - stackoverflow.com/questions/111933/…
  • 您在该函数中使用oObject 的任何地方,都像使用类型一样使用它。这不应该只是一个带有类型参数而不是oObject的泛型方法吗?
  • 你为什么不使用像public static object MyFunction&lt;T&gt;(T oObject, string sJson)这样的通用东西
  • @Damien_The_Unbeliever,我想他只是为了说明他的意图。

标签: c# function object


【解决方案1】:

使用泛型方法可以解决问题:

public static List<T> MyFunction<T>(string sJson)
{
    //do something with the object like below 
    return (List<T>)JsonConvert.DeserializeObject<List<T>>(sJson);
}

用法:

List<Car> cars = MyFunction<Car>(sJson);

List<Lorry> cars = MyFunction<Lorry>(sJson);

更新(感谢 Matthew 注意到方法名称后面的类型), 顺便说一句:当参数为 T 类型时,不需要这样做。

【讨论】:

  • 我同意 100%,尽管我建议添加用法。他可能不熟悉
  • 非常感谢,非常感谢。这就是我想要的。你们怎么知道这么多。
  • 我们都知道一点,我们一起知道很多;-)
  • 您必须在调用MyFunction 时指定类型,因为它无法通过它的使用来推断。 var cars = MyFunction&lt;Car&gt;(json);
猜你喜欢
  • 2018-04-06
  • 2012-05-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-15
  • 1970-01-01
  • 2018-04-01
  • 2021-10-05
  • 1970-01-01
相关资源
最近更新 更多