SetValue no erro da instância PropertyInfo “O objeto não corresponde ao tipo de destino” c #

Utilizando o método Copy com esse código em vários locais de projetos anteriores (para lidar com objetos que possuem as mesmas propriedades nomeadas, mas não derivam de uma classe base comum ou implementam uma interface comum

Novo local de trabalho, nova base de código - agora está falhando no SetValue com "O objeto não corresponde ao tipo de destino", mesmo em exemplos muito simples ... e funcionou na semana passada ....

    public static void Copy(object fromObj, object toObj)
    {   
        Type fromObjectType = fromObj.GetType();
        Type toObjectType = toObj.GetType();

        foreach (System.Reflection.PropertyInfo fromProperty in 
            fromObjectType.GetProperties())
        {
            if (fromProperty.CanRead)
            {
                string propertyName = fromProperty.Name;
                Type propertyType = fromProperty.PropertyType;

                System.Reflection.PropertyInfo toProperty = 
                    toObjectType.GetProperty(propertyName);

                Type toPropertyType = toProperty.PropertyType;

                if (toProperty != null && toProperty.CanWrite)
                {
                    object fromValue = fromProperty.GetValue(fromObj,null);
                    toProperty.SetValue(toProperty,fromValue,null);
                }
            }
        }
    }

    private class test
    {
        private int val;
        private string desc;

        public int Val { get { return val; } set { val = value; } }

        public string Desc { get { return desc; } set { desc = value; } }

    }

    private void TestIt()
    {
        test testo = new test();
        testo.Val = 2;
        testo.Desc = "TWO";

        test g = new test();

        Copy(testo,g);

    }

Felizmente alguém pode apontar onde estou sendo idiota ???

questionAnswers(2)

yourAnswerToTheQuestion