2015-06-22 5 views
2

Как получить список свойств для общего объекта?Использование typeof для общего объекта C#

Для примера:

object OType; 
OType = List<Category>; 
foreach (System.Reflection.PropertyInfo prop in typeof(OType).GetProperties()) 
{ 
    Response.Write(prop.Name + "<BR>") 
} 

Благодаря

+0

Это будет работать, если я знал тип заранее, проблема, с которой я сталкиваюсь, заключается в том, что здесь будет передан тип, который я хочу получить для свойств любого типа (OType). –

+0

"свойства любого типа (OType) будут присвоены" - что это значит? Похоже на неограниченный набор. –

ответ

0

Почему бы не использовать typeof как и необщего типа? Или OType может быть назначен во время выполнения.

Type OType = typeof(List<Category>); 
foreach (System.Reflection.PropertyInfo prop in OType.GetProperties()) 
{ 
    Response.Write(prop.Name + "<BR>") 
} 
+0

Я использую это как funtion: L –

3

Если я правильно понимаю, это упрощение вашего дела.

Если это случай, используйте generics.

public void WriteProps<T>() 
{ 
    foreach (System.Reflection.PropertyInfo prop in typeof(T).GetProperties()) 
    { 
     Response.Write(prop.Name + "<BR>") 
    } 
} 

... 

WriteProps<List<Category>>(); 

Примечание стороны:

В вашем примере вы показываете тип List<Category>. GetProperties() доставит вам the properties of List. Если вы хотите, чтобы свойства категории проверяли это значение SO question.

1

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

Вместо использования typeof (который является константой во время компиляции, в основном), используйте GetType:

void PrintOutProperties(object OType) 
{ 
    foreach (System.Reflection.PropertyInfo prop in OType.GetType().GetProperties()) 
    { 
     Response.Write(prop.Name + "<BR>") 
    } 
} 

Конечно, это работает только, если OType не равно нулю - не забудьте включить любые необходимые проверки и т.д. .

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