是否有可能制作一个通用的方法,我不知道我有什么类型的枚举并解析字符串到这种类型?
示例:
我想从一些模型制作映射器,其中包含字符串列表以及枚举列表
模型1
public class Model1 {
public List<string> SomeList1 {get; set;}
public List<string> SomeList2 {get; set;}
}
模型2
public class Model2{
public List<MyEnum1> SomeList1 {get; set;}
public List<MyEnum2> SomeList2 {get; set;}
}
现在我想在一个通用方法中将Model1.SomeList1解析为Model2.SomeList1,将Model1.SomeList2解析为Model2.SomeList2。
有可能吗?如果是的话,我怎么能做到?
答案 0 :(得分:0)
您可以更改以下类别。
class Program
{
static void Main(string[] args)
{
Model m = new Model();
m.SomeList1=new List<baseModel>();
var _string = m.SomeList1.First<baseModel>().sVal;
var _enum = m.SomeList1.First<baseModel>().eMyEnum;
}
}
class baseModel {
public string sVal;
public myEnum eMyEnum;
public string sVal2;
public myEnum eMyEnum;
}
class Model
{
public List<baseModel> SomeList1 { get; set; }
}
enum myEnum{
someVal=1,
someVal2=2
}
答案 1 :(得分:0)
Thenk你的回复!
在更广泛的上下文中,我有数据库,我有一个模型用于此数据库中的表,一个模型用于数据库用于我的网页(web有自己的数据库,模型有其他数据)。现在我不会映射这两个模型的值。
网页中的用户有drobdown(枚举),db是字符串。我有一些类似的情况。
答案 2 :(得分:0)
我认为这将满足您的需求:
public static List<T> ConvertToEnumList<T>(this List<string> statusList) where T : struct, IConvertible
{
var list = new List<T>();
statusList.ForEach(status =>
{
if (Enum.TryParse<T>(status, out var e))
{
list.Add(e);
}
});
return list;
}
这确实会过滤掉所有不可解析的枚举,如果需要的话,您可能想抛出一个错误。
您可以像这样使用:
new List<string>{"string1", "string2"}.ConvertToEnumList<EnumType>()