良い一日、
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 つあります。どの 5 つを渡すことができるかに応じて、データが変更されます。
使用例:
- 渡されたカスタム タイプ、データを特定の形式にフォーマットし、その項目を db インスタンスのリストに追加します。
- カスタム タイプ 2 が渡され、データを特定の形式にフォーマットし、その項目を db インスタンスのリストに追加します。
- カスタム タイプ 3 が渡され、データを特定の形式にフォーマットし、その項目を db インスタンスのリストに追加します。
したがって、私が探しているのは、データ型に応じてリストに項目を追加する方法であり、受け取った型をテストしてから項目を追加するためのいくつかの異なるメソッドを作成する必要はありません。私は戦略パターンを知っており、それを使用できますが、リストにアイテムを追加するのはどうでしょうか?
私は本当に次のようなコードを書くことを避けようとしています:
// 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();
}
}
ティア、
コソン