1
を推測することはできません。オプションの一般的な型指定されたパラメータは、私はこのようなメソッド定義持っていた
public List<TEntity> GetAll<T> (
params Expression<Func<TEntity, T>>[] fieldsToExclude)
{
...
}
をしかし、私はこのようにそれを作るとき、私は、異なるタイプを持つことができません。
だから私はこれにそれを変更しました:
public List<TEntity> GetAll<T1, T2, T3, T4, T5, T6, T7, T8> (
Expression<Func<TEntity, T1>> field1ToExclude,
Expression<Func<TEntity, T2>> field2ToExclude = null,
Expression<Func<TEntity, T3>> field3ToExclude = null,
Expression<Func<TEntity, T4>> field4ToExclude = null,
Expression<Func<TEntity, T5>> field5ToExclude = null,
Expression<Func<TEntity, T6>> field6ToExclude = null,
Expression<Func<TEntity, T7>> field7ToExclude = null,
Expression<Func<TEntity, T8>> field8ToExclude = null)
{
...
}
そして、私はそれが好きで使用しよう:
var allItems = GetAll(p => p.SomeProperty1, p => p.SomeProperty2);
しかし、今、クライアント側でそれは言う:
型引数を'...'はその使用法から推測できません。
私はオプションのパラメータを一切使用しないので意味があります。私はすべてのパラメータを与えるとき、それは正常に動作しますが、オプション性はそれを誤っています。
テレスコープパラメータを使用して多くのメソッドを作成することは不可能です。しかし、あまりにも控えめなやり方があるはずです。この機能をどのように提供できますか?
あなたは 'paramsは式<のFunc> [] fieldsToExclude'と(それらの式を渡すEntityFrameworkプロバイダであると仮定すると)実際の式の型キャストを処理します。 –
haim770
基本的に解決策はありません。典型的な回避策は 'params Expression> []'を使い、値型について導入された 'Expression.Convert'を扱うことです。 –
EntityFrameworkプロバイダではないので、型キャストを処理する必要はありません。私はフィールドの名前を使用するだけで、実際には 'T 'を使用していませんでした。したがって、これは実際に動作するはずです。あなたはanswer @ haim770として投稿するべきです。 –