2014-12-02 2 views
0

Я пытаюсь выяснить, возможно ли следующее: я сделал много поисковых запросов, и я немного смущен. Я уверен, что смогу выработать отражение класса в классе объектов, и обновление базы данных не является проблемой, если у меня есть цикл, но я не могу разобраться, если это вообще возможно.Передача объекта класса переменной до класса

Если бы я делал это с объектом фиксированного класса, было бы легко, я бы просто сделать:

public void updateDB(obj_Users myObject) 

Но поскольку у меня есть много объектов класса, которые будут принимать долгое время, таким образом пытаясь чтобы сделать его более динамичным.

Вот пример класса я хочу, чтобы пройти через (но может быть и следующий в том же формате):

public class obj_Users 
{ 
    public Int32 UserID { get; set; } 
    public String UserName { get; set; } 
    public String FirstName { get; set; } 
    public String Surname { get; set; } 
    public String Email { get; set; } 
    public Int32 UserRole { get; set; } 
    public Int32 UserCompanyID { get; set; } 
    public String UserPassword { get; set; } 
    public Boolean IsAdmin { get; set; } 
    public String SessionKey { get; set; } 
} 

Вот некоторые псевдокод, что я пытаюсь добиться, чтобы объяснить:

public void updateDB(AnyClassObject obj_Users) 
{ 
    // Loop through obj_Users and grab the properties 

    // DB update call 
} 
+1

Вы можете получить свойства, используя 'obj_Users.GetType(). GetProperties() ', есть ли что-нибудь, в частности, вы застряли? –

+0

Извините, что получить свойства не является проблемой, его возможность передать объект через updateDB я не могу работать – TMB87

+0

Является ли AnyClassObject предком obj_Users? –

ответ

0

Это:

public void updateDB(object paramobj) 
{ 
    foreach(var prop in paramobj.GetType().GetProperties()) 
    { 
      //grab 
    } 
    // update 
} 
+0

То, что я пытаюсь достичь, но не нужно перечислять каждый объект в if-i, у меня есть 100 объектов, так что это бит, который я пытаюсь сделать динамическим – TMB87

+0

Я обновил ответ соответственно –

+0

Это имеет смысл. Как мне это назвать? Когда я делаю DBCommon dbc = новый DBCommon(); dbc.updateDB (obj_Users); он говорит мне, что obj_Users является типом, но используется как переменная – TMB87

0

Попробуйте это цикл, чтобы получить свойства

foreach(var prop in obj_Users.GetType().GetProperties()) { 
    //use your props 
} 
0

Вам просто нужно, чтобы ваш параметр имел тип object, чтобы передать экземпляр любого класса или структуры.

public void updateDB(object whatever) 
{ 
    foreach(var prop in whatever.GetType().GetProperties()) 
    { 
     ... //do stuff 
    } 
} 
0

Если вы застряли с проблемой, чтобы иметь дело с различными классами, общий метод должен соответствовать вашим потребностям:

public void UpdateDB<T>(T obj) 
{ 
    var properties = typeof(T).GetProperties(); 

    foreach (var prop in properties) 
    { 
     // Here you loop through the properties. 
    } 
} 
Смежные вопросы