[英]How do I map enums in many-to-one relationship
我有兩個枚舉,源一個是來自 api 的響應,另一個是我想發送到前端的。
public enum ApiResponse
{
A=1,
B=2,
C=3,
D=4
}
public enum DestEnum
{
A=1,
BCD=2
}
我想做的是:
public class ExampleViewModel
{
public DestEnum foo { get; set; }
}
var response = ApiResponse.C;
result = new ExampleViewModel()
{
foo = response
};
我希望foo
值是DestEnum.BCD
是否可以使用 automapper 或一些自定義屬性?
假設您已經將序列化程序設置為發送字符串,您似乎只是在尋找一種將 X 映射到 Y 的方法
怎么樣:
public static class EnumExtensions{
static Dictionary<ApiResponse,DestEnum> _mapDest =
new() {
[ApiResponse.A] = DestEnum.A,
[ApiResponse.B] = DestEnum.BCD,
[ApiResponse.C] = DestEnum.BCD,
[ApiResponse.D] = DestEnum.BCD,
};
public static DestEnum AsDest(this ApiResponse x) => _mapDest[x];
}
然后您可以將獲得的 ApiRespnse 轉換為 Dest,例如:
return new BlahViewModel{
DestEnumProperty = apiResponseEnumValueIGot.AsDest(),
OtherProp = ...
}
警告,如果您得到任何未映射的值,查找將會崩潰; 如果您認為這將成為可能,請考慮在您的 DestEnum 中使用 Unknown 值並執行以下操作:
=> _mapDest.TryGetValue(x, out var r) ? r : DestEnum.Unknown
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.