Вы можете сделать это через кастинг, но я бы не рекомендовал его, так как он хрупок - если какой-либо из членов enum переупорядочивается или добавляются новые элементы, результат может оказаться не таким, как вы ожидаете.
EnumAProperty = (EnumA) EnumBProperty;
Дажехуже с приведением типов, если у вас есть элементы в исходном перечислении без эквивалента в месте назначения - ниже больше цветов, чем фигур:
enum Color { Red = 0, Yellow = 1, Blue = 2 };
enum Shape ( Square = 0, Triangle = 1 };
Color color = Color.Red;
Shape shape = (Shape) color;
shape
может закончиться со значением 2
дажехотя это значение не определено.
Вместо этого я бы предложил использовать для сопоставления оператор switch
:
EnumAProperty = ConvertToA(EnumBProperty);
...
private static EnumA ConvertToA(EnumBProperty b)
{
switch (b)
{
case EnumB.Flannel: return EnumA.HandTowel;
case EnemB.Vest: return EnumA.UnderShirt;
...
default: throw new ArgumentOutOfRangeException("b");
}
}