vedere ho una situazione come questa ...Pass Tipo dinamicamente per <T>
object myRoledata = List<Roles>() --> (some list or Ienumerable type)
Ora ho un metodo generico che crea un oggetto XML da List<T>
- Qualcosa di simile ..
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
}
}
Ora, al fine di eseguire questo metodo che devo fare in questo modo:
string xml = GetXML<Roles>(myRoledata);
Ora non so cosa mi può passare Type
da passare al metodo GetXML
. Ho un metodo che chiamerà GetXML
per diversi Type
s per es. Roles
, Users
ecc
ora posso ottenere il Type
all'interno del List<>
come questo
Type genericType = obj.GetType().GetGenericArguments()[0];
ma non può passare in questo modo
string xml = GetXML<genericType>(myRoledata);
C'e 'qualche cosa in cui posso passare qualsiasi genericTypes
a Metodo GetXML
?
Probabilmente vorrete chiarire nella domanda se i (possibilmente multipli) tipi di T sono sconosciuti al momento della compilazione o meno. Se sono conosciuti, la risposta di Ulrik ha senso, cioè smetti di lanciare e forza il tipo di argomento (magari con diversi sovraccarichi). Se non è noto, è necessario utilizzare la riflessione, in qualche modo, e la risposta di Marks mostra il modo più semplice e probabilmente migliore per raggiungere questo obiettivo. – ShuggyCoUk