私はWebAPIの方法があります。式<機能<T, bool>>述語2種類
public interface IService<T>
where T : class
{
Task<T> Get(Expression<Func<T, bool>> predicate);
Task<IEnumerable<T>> GetAll(Expression<Func<T, bool>> predicate = null);
void Add(T viewModel);
void Delete(string id);
void Update(T viewModel);
}
そしてIMerchantService:メソッドと
public interface IMerchantService : IService<MerchantViewModel>
{
}
実装:
public async Task<MerchantViewModel> Get(string externalId)
{
return await _service.Get(m => m.ExternalId == externalId);
}
を私はIServiceを持っています
public class MerchantService : IMerchantService { // ...
public async Task<IEnumerable<MerchantViewModel>> GetAll(Expression<Func<MerchantViewModel, bool>> predicate = null)
.. //
}
T
がMerchantViewModel
であると、私はこの方法でリポジトリを有する場合:T
がMerchant
ある
public async Task<IEnumerable<Merchant>> GetItemsAsync(Expression<Func<Merchant, bool>> predicate = null)
。
public async Task<MerchantViewModel> Get(Expression<Func<MerchantViewModel, bool>> predicate)
{
var domainMerchant = this._repository.GetItemAsync(predicate)
}
は、私はそれをどのように行うことができます。
そして今、私はそのような何かをしたいですか?
マーチャントとMerchantViewModelのプロパティは同じです。 ViewModelには何かがあります。
別のオーバーロードを追加するか、商人のタイプを総称T –
に置き換えます。メソッド署名にはどこに「T」がありますか?最初の2つのメソッドは、複数のオブジェクトを返します。最後のメソッドは、単一のオブジェクトを返すことを望んでいるようです。あなたが求めていることは本当にはっきりしません。 –
これをチェックしてみてください。http://stackoverflow.com/questions/18337692/entity-framework-filter-expressionfunct-bool –