un código de ejemplo de lo que trato de hacer, seguramente lo hará mejor que mi inglés:

public bool IsNumericValueInBounds (string value, Type numericType)
{
  double d = double.NaN;     

  bool inBounds = (bool)numericType.GetMethod ("TryParse").Invoke (null, new object[] { value, d });

  return inBounds;
}

Por desgracia, el método TryParse necesidades de un parámetro de salida así que esto no funciona.
alguna idea de cómo solucionar esto?

(ps.: cansaría este ser un buen ejemplo para el pato de escribir? – porque sé que cada numericType tiene un «TryParse» o me equivoco?)

  • Usted debe ser capaz de analizar cualquier tipo numérico doble, lo doble.TryParse() debe hacer aquí?
  • Para la gente que viene aquí en el futuro: @Lars, no todos numérico puede ser analizada para doble sin perder precisión, decimal, en particular, es el peor criminal aquí.
  • .NET Framework se ha construido en la funcionalidad de las IConvertible conversiones de tipo: TypeConverter, GetConverter, Convertir.ChangeType, Comparison
InformationsquelleAutor Bluenuance | 2009-02-20

1 Comentario

  1. 112
    public static bool TryParse( string text, out int number ) { .. }
    
    MethodInfo method = GetTryParseMethodInfo();
    object[] parameters = new object[]{ "12345", null }
    object result = method.Invoke( null, parameters );
    bool blResult = (bool)result;
    if ( blResult ) {
        int parsedNumber = (int)parameters[1];
    }
    • En caso de que alguien se está preguntando por qué esto funciona, la matriz de parámetros es una matriz de objetos y el objeto nulo en el índice 1 se sustituye por el valor del parámetro. Si pones una variable en la matriz (por ejemplo, new object[] { «123», myVar };), a continuación, después de Invocar el valor de myVar no va a cambiar, pero los parámetros[1] todavía contienen el parámetro de valor.

Dejar respuesta

Please enter your comment!
Please enter your name here