我有一个Feed,它具有序列化为逗号分隔值的不同属性
feed = "[{"HIGH", "[235.76, 235.96, 235.97]"},
{"LOW", "[235.76, 235.96, 235.97'"},
{"DATE", "[20170410-10:21:34, 20170410-10:31:34, 20170410-10:43:34, 20170410-10:59:34]" } .....
]"
我有业务需要创建一个实体,其中包含HIGH / LOW / Date等每个的不同属性。现在"高"和Low将是double,而Date将是dateTime类型。 我在每个标记之后拆分字符串,然后将每个值解析为相应的属性。
但是由于属性的数据类型不同,我需要为每种类型提供一个解析函数。
private void GetFeedData(string[] data, List<int> field)
{
for (int i = 0; i < data.Length; i++)
{
**int fieldValue = int.Parse(data[i]);**
field.Add(fieldValue);
}
}
我最终得到了不同的函数,一个特定于每种数据类型,只是解析 fieldValue
我想做这样的事情,但似乎并没有得到支持。
private void GetFeedData<T>(string[] data, List<T> field) where T: struct
{
for (int i = 0; i < data.Length; i++)
{
T fieldValue = (T)(data[i]);
field.Add(fieldValue);
}
}
这将是所有类型的单一方法,这将更容易。不知道怎么做到这一点..请帮忙
答案 0 :(得分:2)
试试这个,但我认为你的例子在语法上不正确。
private IList<T> GetFeedData<T>(string[] data)
{
List<T> field = new List<T>();
for (int i = 0; i < data.Length; i++)
{
T fieldValue = (T)(Convert.ChangeType(data[i], typeof(T)));
field.Add(fieldValue);
}
return field;
}