Mi primer post ... La esperanza se ve muy útil trabajar en mi proyecto ...
public dynamic ConvertList(Type CallingType)
{
dynamic DynamicList;
if (CallingType == TypeOfValue)
{
Type d1 = typeof(List<>);
Type[] typeArgs = { TypeOfValue };
Type DynamicListType = d1.MakeGenericType(typeArgs);
object DynamicListObj = Activator.CreateInstance(DynamicListType);
DynamicList = Convert.ChangeType(DynamicListObj, DynamicListType);
foreach (object ValueElement in ValueRange)
{
dynamic el = Convert.ChangeType(ValueElement, TypeOfValue);
DynamicList.Add(el);
}
}
else //retrun empty List but with right type
{
Type d1 = typeof(List<>);
Type[] typeArgs = { CallingType };
Type DynamicListType = d1.MakeGenericType(typeArgs);
object DynamicListObj = Activator.CreateInstance(DynamicListType);
DynamicList = Convert.ChangeType(DynamicListObj, DynamicListType);
}
return DynamicList;
}
Creo que agregaré también una captura de prueba en alguna parte.
cómo probar
if (PropertyType == typeof(UInt32))
{
List<UInt32> UInt32_test = NewProperty.ConvertList(PropertyType);
}
if (PropertyType == typeof(string))
{
List<string> string_test = NewProperty.ConvertList(PropertyType);
}
Esto no será posible en la versión 4 o bien, porque no se Typesafe a cualquiera "conversión hacia arriba" o "abatido" una 'lista' - que es invariante, no covariantes contravariante. Por cierto, me estoy cansando de que esta desinformación se publique en todas las preguntas sobre co-contravariación de la colección. –