以下は、別のクラスに注入される依存関係の実装です。
public class CsvDataProvider : ICsvDataProvider
{
readonly ICsvReaderFactory _factory;
public CsvDataProvider(ICsvReaderFactory factory)
{
_factory = factory;
}
public IEnumerable<TRecord> GetData<TRecord>(string filepath) where TRecord : class
{
var reader = _factory.CreateCsvReader(filepath);
return reader.GetRecords<TRecord>();
}
}
reader
によって作成されたは、CSVファイルのfactory
すべての行を読み取り、各行をのインスタンスに変換しますTRecord
。reader
私はコードを所有しておらず、GetRecords<TRecord>()
メソッドを変更できません。
これは私が立ち往生しているところです:
public class CsvDataMigrationController
{
readonly ICsvDataProvider _provider;
readonly ICsvDataMigration _migration;
public CsvDataMigrationController(ICsvDataProvider provider, ICsvDataMigration migration)
{
_provider = provider;
_migration = migration;
}
public void ProcessFile(string path)
{
var records = _provider.GetData<I_DONT_WANT_TO_EXPLICITLY_SAY>(path); //<-- Help!
_migration.Migrate(records);
}
}
目的は、データプロバイダーと移行手順クラスをに注入することですCsvDataMigrationController
。コントローラはデータプロバイダーを呼び出してデータを取得し、データを移行クラスに渡します。
CsvDataMigrationController
関係するデータの種類について知りたくありません。CsvDataProvider
移行について知りたくありません。CsvDataMigration
データがどこから来たのか知りたくありません。
これを達成する方法について何かアドバイスはありますか?
注:CsvDataMigration
説明に役立たないと思ったため、クラスを含めませんでしたが、必要に応じて含めます。