Copying enum property from one class to another

.net, c#

Solution

Just cast it to an `int` and then to the new enum:

public static ClassTwo(ClassOne one)
{
  var two = new ClassTwo()
  {
    Name = one.Name,
    Code = one.Code,
    Mode = (ClassTwo.MyUserMode)((int)one.Mode);
  };
}

This is assuming that both enums have the exact same `int` values.

A safer way to do this would be using `Enum.IsDefined`:

public static ClassTwo(ClassOne one)
{
  var mode = (ClassTwo.MyUserMode)((int)one.Mode);
  if (!Enum.IsDefined(typeof(ClassTwo.MyUserMode), mode)
    throw new InvalidOperationException("Cannot map enums.");
  var two = new ClassTwo()
  {
    Name = one.Name,
    Code = one.Code,
    Mode = mode
  };
}

Problem

I have two classes with exact type properties but with different property names. So I want to copy every property to corresponding property which resides in different class. For example ``` public class ClassOne { public string Name {get; set;} public string Code {get; set;} public UserMode Mode {get; set;} public enum UserMode {A=1, B=2, C=3}; } public class ClassTwo { public string MyName {get; set;} public string MyCode {get; set;} public MyUserMode Mode {get; set;} public enum MyUserMode MyMode {AA=1, BB=2, CC=3}; } ``` Since this only cross on my mind I created Helper method which converts ClassOne To ClassTwo taking every member and copy it's values like ``` public static ClassTwo(ClassOne one) { var two = new ClassTwo() { MyName = one.Name, MyCode = one.Code, // how to copy enum value ?? }; } ``` Question is: How can I copy enums like I did above with Name and Code? Thanks

Original source