My advice would also be to skip all that mapping. You can easily hide properties by simply defining interfaces and pass those. For example, you receive
Abcde
but pass it as
IAbc
which effectively restricts access to some properties.
public interface IAbc
{
int A { get; }
int B { get; }
int C { get; }
}
public class Abcde : IAbc
{
public int A { get; set; }
public int B { get; set; }
public int C { get; set; }
public int D { get; set; }
public int E { get; set; }
}
Good luck!