ver que tengo una situación como esta ...Pass Tipo de forma dinámica a <T>
object myRoledata = List<Roles>() --> (some list or Ienumerable type)
ahora tengo un método genérico que crea un objeto XML de List<T>
- Algo como esto ..
public string GetXML<T>(object listdata)
{
List<T> objLists = (List<T>)Convert.ChangeType(listData, typeof(List<T>));
foreach(var obj in listdata)
{
//logic to create xml
}
}
Ahora con el fin de ejecutar este método que tengo que hacer como esto:
string xml = GetXML<Roles>(myRoledata);
Ahora no sé qué Type
puede venir a mí para pasar al método GetXML
. Tengo un método que llamará al GetXML
para diferentes Type
s p. Ej. Roles
, Users
etc
Ahora puedo conseguir el Type
dentro del List<>
como esto
Type genericType = obj.GetType().GetGenericArguments()[0];
, pero no puede pasar como este
string xml = GetXML<genericType>(myRoledata);
¿Hay alguna forma en la que yo pueda pasar cualquier genericTypes
a GetXML
método?
Es probable que desee dejar en claro en la pregunta si los tipos (posiblemente múltiples) de T son desconocidos en tiempo de compilación o no. Si se conocen, la respuesta de Ulrik tiene sentido, es decir, dejar de transmitir y forzar el tipo de argumento (quizás con varias sobrecargas). Si no se conoce, debe usar el reflejo, de alguna forma, y la respuesta de Marcas muestra la mejor y más simple forma de lograr esto. – ShuggyCoUk