【发布时间】:2019-04-09 23:14:56
【问题描述】:
我觉得这应该是我脑海中浮现的东西,但我想不出一种方法可以在数十个 if 语句之外加载正确的数据。
我有一堆这样的文件:
public static class TableDemo
{
public static dynamic TableDef() {
var json = @"{
'date': {
'StartingPosition': 5,
'ColumnWidth': 7,
'DataType': 'Date'
};"
dynamic newJson = JsonConvert.SerializeObject(json);
dynamic TableJson = JObject.Parse(json);
return TableJson;
}
}
每个文件都描述了我正在加载的不同平面文件。当我去加载它时,我希望使用我传入的参数使用标准化函数将所有内容加载到数据表中。这是我的工作示例:
public static DataTable ParseTable()
{
JObject data = TableDefinitions.TableDemo.TableDef();
... do stuff with data ...
}
我希望能够传入这样的参数:
public static DataTable ParseTable(string LoadTable)
{
JObject data = TableDefinitions.LoadTable.TableDef();
... do stuff with data ...
}
使用类似的方法调用函数:
ParseTable("Users");
由于我将拥有数百个文件,如果没有大量像这样的 if 语句,我该怎么做:
if(LoadTable =="Users"){
JObject data = TableDefinitions.Users.TableDef();
}else if(LoadTable =="Employees"){
JObject data = TableDefinitions.Employees.TableDef();
}
【问题讨论】:
-
您可以使用
Dictionary<string, JObject>简化if语句,其中键是表(“Users”、“Employees”...),值是对应的JObject(TableDefinitions.Users.TableDef()等) -
我不知道你的情况,但你确定,你没有重新发明 JsonConvert
.Deserialize() 所做的事情吗? -
@ChristophLütjen 我用过
JsonConvert.DeserializeObject<RootObject>(jsonString),但我会调查你的方式。
标签: c# .net function functional-programming