por razones auditivas. Almaceno los argumentos de los métodos comerciales serializados en la base de datos utilizando el formato binario.C# - ¿Cómo deserializar una lista genérica <T> cuando no sé el tipo de (T)?
El problema es que cuando un argumento es una lista genérica, no encuentro la manera de lanzar el objeto deserializado porque no sé el tipo, o si sabré el tipo, no sé cómo lanzar el objeto en tiempo de ejecución.
¿Alguien sabe cómo lanzar dinamicamente un objeto que contiene una lista genérica en el tiempo de ejecución?
Necesito hacer esto porque necesito mostrar los datos deserializados en una cuadrícula de propiedades:
object objArg = bformatter.Deserialize(memStr);
//If the type is a clr type (int, string, etc)
if (objArg.GetType().Module.Name == "mscorlib.dll")
{
//If the type is a generic type (List<>, etc)
//(I'm only use List for these cases)
if (objArg.GetType().IsGenericType)
{
// here is the problem
pgArgsIn.SelectedObject = new { Value = objArg};
//In the previous line I need to do something like...
//new { Value = (List<objArg.GetYpe()>) objArg};
}
else
{
pgArgsIn.SelectedObject = new { Value = objArg.ToString() };
}
}
else
{
//An entity object
pgArgsIn.SelectedObject = objArg;
}
"razones auditivo"? ¿Qué significa esto en este contexto? –
Para el cumplimiento de las normas de auditoría, me imagino. – AakashM
Para información, 'BinaryFormatter' es bastante frágil si cambias tus objetos. Recomendaría un serializador basado en contrato como XmlSerializer, DataContractSerializer o (para binario) protobuf-net. –