2013-08-09 2 views
4

У меня есть 10 различных классов, но ниже два для целей данного вопроса:Как пройти различные объекты в том же функцию в C#

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(); 

Мой вопрос в том, как передать объект другого типа в ту же функцию?

+2

Вы также должны прочитать это: http://stackoverflow.com/questions/111933/why-shouldnt-i-use-hungarian-notation – Yuck

+1

Всюду, где вы используете 'oObject' в этой функции, вы используете это похоже на тип. Разве это не просто общий метод с аргументом типа вместо 'oObject'? –

+0

Почему вы не используете Generic Что-то вроде 'public static object MyFunction (T oObject, string sJson)' – Nilesh

ответ

9

Используя общие методы будут решать трюк:

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

Usage:

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

или

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

Update (спасибо Мэтью для заметив, типа за именем метода) , btw: это не требуется, когда параметр имеет тип T.

+3

Я согласен на 100%, хотя я бы предложил добавить использование. Скорее всего, он не знаком с . – Smeegs

+0

Вы правы, я немного поспешил. Я исправлю это. –

+1

Большое спасибо, очень благодарен. Это то, чего я хотел. Как вы так много знаете. – Tommassiov

Смежные вопросы