samedi 19 novembre 2016

Subclass Reflection type error

I'm currently having some issues with a method I made. I use reflection to run through my class and get all it's properties. I use this to cast my models to DTO and vice-versa.

The problem I am encountering is that, whenever my class has another class as an attribute, I get an error.

Object of type 'UserTypeProxy' cannot be converted to type 'MyNamespace.DTO.UserTypeDto'.

This is my code:

public static T Cast<T>(object myobj)
{
    Type _objectType = myobj.GetType();
    Type target = typeof(T);

    var x = Activator.CreateInstance(target, false);

    var z = from source in _objectType.GetMembers().ToList()
            where source.MemberType == MemberTypes.Property
            select source;

    var d = from source in target.GetMembers().ToList()
            where source.MemberType == MemberTypes.Property
            select source;

    List<MemberInfo> members = d.Where(memberInfo => d.Select(c => c.Name)
       .ToList().Contains(memberInfo.Name)).ToList();

    PropertyInfo propertyInfo;
    object value;

    foreach (var memberInfo in members)
    {
        propertyInfo = typeof(T).GetProperty(memberInfo.Name);
        var propy = myobj.GetType().GetProperty(memberInfo.Name);
        value = propy.GetValue(myobj, null);

        propertyInfo.SetValue(x, value, null); //<-- this is the line that gives the error
    }
    return (T)x;
}





Aucun commentaire:

Enregistrer un commentaire