再会,
我有一种情况,我正在使用包含一个名为 ImportFileContext 的类的代码。代码如下所示:
// One of 5 different types can be passed in
public AddImportData(CustomType ModelData)
{
// Depending on which 5 different types, the formatted type will change
FormattedType data = ConvertModelDataToFormattedData(ModelData);
using (var db = new ImportFileContext())
{
// Can this next line be made dynamic?
db.ImportFormattedData.Add(data);
db.SaveChanges();
}
}
基本上,CustomType 将始终传递给该方法。但是,可以传入五种不同的自定义类型。根据可以传入的5种,将修改数据。
用例:
- 传入的自定义类型,将数据格式化为特定格式,然后将该项目添加到数据库实例的列表中。
- 传入的自定义类型 2,将数据格式化为特定格式,然后将该项目添加到数据库实例的列表中。
- 传入的自定义类型 3,将数据格式化为特定格式,然后将该项目添加到数据库实例的列表中。
所以我正在寻找一种根据数据类型将项目添加到列表的方法,而无需编写几种不同的方法来测试我收到的类型然后添加项目。我知道策略模式并且我可以使用它,但是将项目添加到列表中呢?
我真的在努力避免编写如下所示的代码:
// One of 5 different types can be passed in
public AddImportData(CustomType ModelData)
{
// Depending on which 5 different types, the formatted type will change
FormattedType data = ConvertModelDataToFormattedData(ModelData);
using (var db = new ImportFileContext())
{
if (typeof(ModelData) == "CustomType")
db.ImportFormattedData.Add(data);
elseif (typeof(ModelData) == "CustomType1")
db.ImportCsvData.Add(data);
elseif (typeof(ModelData) == "CustomType2")
db.ImportTabDelimetedData.Add(data);
db.SaveChanges();
}
}
TIA,
科森