Estoy invocando a un método estático Analizar en una clase a través de la reflexión, porque no sé el tipo de objeto en tiempo de compilación (sí sé, sin embargo, tiene un Analizar método, teniendo una cadena).

Sin embargo, me estoy haciendo una ambigua partido de excepción, presumiblemente porque hay un montón de sobrecarga Analizar métodos de cada uno de tomar un solo objeto (string, int, double, etc.).

¿Cómo puedo ser más específico en mi invocación de método para asegurarse de que yo alcance el método correcto (Parse(string s)) y no se produce la excepción.

Mi código es este:

Type returnType = p.PropertyType;
object value = returnType.GetMethod("Parse").Invoke(null, new string[] { "1" });
InformationsquelleAutor Ben | 2009-12-28

1 Comentario

  1. 173

    Uso este sobrecarga y el uso

    returnType.GetMethod("Parse", new [] {typeof(string)})
    • Estoy confundido por qué te gustaría escribir ese comentario – ¿y por qué se consideran las cuestiones de estilo, vale la pena analizar?
    • La presentación está muy bien, lo que ocurre es seguir un estilo diferente de la que parece preferir. Te comento lo largo de las líneas de «me gustaría utilizar este cobertizo para guardar bicicletas, si fuera un poco más azulado». Lo que me confunde. Edita el comentario: a Menos que usted está consciente de que los nuevos [] {} en realidad deduce el tipo de la Matriz y ES equivalente a new Tipo[] en este caso? En ese caso lo siento – supuse que se puede comentar sobre el estilo (ambas obras), mientras que potencialmente pensando en el fragmento de código que está mal (no lo es).
    • Gracias por la respuesta, chicos. Para guardar el tipo de al lado, con algunos problemas, para los tipos de referencia, usar algo como esto: typeof(cadena).MakeByRefType();
    • ¿Qué, no te gusta el tipo de inferencia? Yo realmente prefiero la forma de Benjamin formato. Yo prefiero la inferencia de tipos (es más) que la escritura explícita. Su respuesta es buena, el estilo no debe ser un factor en la calidad de una respuesta. El resultado de la respuesta es el único resultado que importa.
    • Yo no soy joven y seguro que suena condescendiente. Un programador que no puede leer new [] { typeof(string) } tiene otros problemas de mantenimiento de código. El tipo es, literalmente, el derecho allí. Además de ‘loco one-liners’ no son relevantes, su estilo preferido sólo añade redundante de las letras en esta misma línea. Yo diría que new Type[] {...} es menos legible, debido a que la línea más larga y que la información irrelevante/estándar/ruido. Por lo tanto: Es una cuestión de estilo y se inició la discusión con un pasivo agresivo ‘habría upvoted, si se atienden a mi gusto»..
    • Conseguir un poco de experiencia? He estado en mi carrera de 9 años, casi una década. Tengo un montón ya (y mucho más para aprender), pero sé lo suficiente de que la verbosidad es una terrible manera de grado una respuesta.
    • Tenga cuidado, no va a funcionar si los 2 métodos tienen el mismo nombre, el mismo número de parámetros y los mismos tipos de parámetros. Estoy pensando de conversión explícita a los operadores de las sobrecargas. Por ejemplo public static explicit double(MyType obj) y public static explicit float(MyType obj). Usted todavía tendrá un AmbiguousMatchException. En este caso, se puede utilizar returnType.GetMethods().SingleOrDefault(m => m.Name == "op_Explicit" && m.ReturnType == typeof(float)) por ejemplo.

Dejar respuesta

Please enter your comment!
Please enter your name here