Введите параметр в переменную - PullRequest
3 голосов
/ 16 марта 2011

как получить значение класса свойства с помощью этого метода?

public static int SQLInsert<TEntity>(TEntity obj) where TEntity : class
{
    foreach (var item in obj.GetType().GetProperties())
    {
        //item.GetValue(?,null);
    }
    return 1;
}

Ответы [ 3 ]

5 голосов
/ 16 марта 2011

item будет PropertyInfo. Вы бы использовали:

object value = item.GetValue(obj, null);

Обратите внимание, что вы в значительной степени игнорируете параметр типа TEntity в данный момент. Вы можете использовать:

foreach (var property in typeof(TEntity).GetProperties())

Таким образом, если кто-то звонит

SQLInsert<Customer>(customer)

и значение customer на самом деле относится к подклассу Customer с дополнительными свойствами, будут использоваться только свойства Customer.

1 голос
/ 16 марта 2011
item.GetValue(obj, null);

это будет работать

0 голосов
/ 16 марта 2011

Таким образом, вместо индексатора вы можете использовать нулевое значение:

public static int SQLInsert<TEntity>(TEntity obj) where TEntity : class
{
    var indexer = new object[0];
    foreach (var item in obj.GetType().GetProperties())
    {
        item.GetValue(obj,indexer);
    }
    return 1;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...