es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error de que el objeto no coincide con el tipo de destino de reflexión.

Estoy obteniendo el error “El objeto no coincide con el tipo de destino”. Entiendo por qué debería estar obteniendo el error. Sin embargo, estoy asignando un “double” a un “double”.
No estoy seguro de por qué estoy obteniendo el error en el código a continuación.

El código con el que tengo problemas:

var specTran = new SpecTran(gapRecord);
foreach (var result in yields._predictions)
{
var type = specTran.GetType(); // –> {Name = “SpecTran” FullName = “GAP.Models.Database.SpecTran”}
var prop = type.GetProperty(result.Key); // –> {Double DexaCWT}

if (prop == null)
    continue;

prop.SetValue(
    (double)result.Value, // --> {[DexaCWT, 0]}
    specTran);

}

Clase PredictionResult:

PredictionResult {

public Dictionary<string, double=””> _predictions { get; set; }
}</string,>

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema en el código proporcionado radica en el orden de los parámetros en el método SetValue. El primer parámetro debería ser el objeto en el cual se va a establecer el valor de la propiedad, y el segundo parámetro debería ser el nuevo valor de la propiedad. Sin embargo, en el código proporcionado, el orden de los parámetros está invertido, lo cual está causando el error “Object does not match target type” (El objeto no coincide con el tipo de destino).

    Para solucionar este problema, se debe invertir el orden de los parámetros en el método SetValue. El código corregido se muestra a continuación:

    var specTran = new SpecTran(gapRecord);
    foreach (var result in yields._predictions)
    {
        var type = specTran.GetType(); 
        var prop = type.GetProperty(result.Key); 
    
        if (prop == null)
            continue;
    
        prop.SetValue(
            (double)result.Value, // orden de los parámetros invertido
            specTran); 
    }
    

    Con este cambio, el valor de la propiedad debería establecerse correctamente sin ningún error.

Comments are closed.