我有两个具有确切类型属性但具有不同属性名称的类。所以我想将每个属性复制到位于不同类中的相应属性。
例如
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};
}
由于这只是我的想法,我创建了Helper方法,它将ClassOne转换为ClassTwo,取得每个成员并复制它的值,如
public static ClassTwo(ClassOne one)
{
var two = new ClassTwo()
{
MyName = one.Name,
MyCode = one.Code,
// how to copy enum value ??
};
}
问题是:我如何使用姓名和代码复制枚举?
由于
答案 0 :(得分:9)
只需将其转换为int
,然后转换为新的枚举:
public static ClassTwo(ClassOne one)
{
var two = new ClassTwo()
{
Name = one.Name,
Code = one.Code,
Mode = (ClassTwo.MyUserMode)((int)one.Mode);
};
}
这假设两个枚举都具有完全相同的int
值。
更安全的方法是使用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
};
}
答案 1 :(得分:1)
您可以将值转换为int
MyMode = (MyUserMode)((int)one.UserMode)