jeudi 28 avril 2016

Unable to match Int?16 using Reflection

I am trying to set a value for Model property, by checking firs the COM type and then the outgoing Model type in the IF ELSE statement. However, I am only able to achieve this for property GroupID and not for ParentID.

SQL Database:

GroupID tinyint
ParentID smallint (nullable)

Model:

public Int16? GroupID { get; set; }
public Int16? ParentID { get; set; }

Using reflection, I am trying to set default model value depending on the Data Type of the property.

C#:

if (comModel.FieldValue(prop.Name).GetType() == typeof(short))
     {
        //checking out going model type and setting value
        if (modelOut.GetType().GetProperty(prop.Name).PropertyType == typeof(bool))
        {
            modelOut.GetType().GetProperty(prop.Name).SetValue(modelOut, false);
        }
        else
        {
            modelOut.GetType().GetProperty(prop.Name).SetValue(modelOut, (short)-999);
        }
     }
     // I have also tried this but does not fall into here
    else if (comModel.FieldValue(prop.Name).GetType() == typeof(Int16?))
    {
     var s = true;
    }

After investigating, I am assuming the SQL data types are different and this may be a reason why. If so, then the Int?16 should have captured it but it doesn't.

Any help is appreciated. Thanks





Aucun commentaire:

Enregistrer un commentaire