データベース テーブルを C# の型にマップするためだけに Dapper を使用しようとしていますが、一部の型では、テーブルにない追加の要素が必要です。これを行うために、列の値を取り、適切なプロパティを設定できるファクトリを使用しています。
public IEnumerable<IMyType> All() {
var query = _connection.Query("SELECT * FROM [table]");
return query.Select(o => _myTypeFactory.Create(o));
}
現在、これにより return ステートメントがエラーを生成しています。
'System.Collections.Generic.IEnumerable<dynamic>'
式の型を戻り値の型に変換できません'System.Collections.Generic.IEnumerable<IMyType>'
私のファクトリークラスは次のようになります。
public class MyTypeFactory {
public IMyType Create(dynamic o) {
return Create((String) o.Code, (Int32) o.KeyID);
}
public IMyType Create(String code, Int32 keyID) {
return new MyType(code, Cache.Lookup(keyID));
}
}
Select()
メソッドが返さないのはなぜIEnumerable<IMyType>
ですか? これを機能させるにはどうすればよいですか? これは単に間違ったアプローチであり、より良い方法がありますか?