これはおそらく比較的単純な見落としですが、実際にこれを行うことが許可されているかどうか、または合理的な代替手段 (VS2010、C# .Net 4.0 を使用) があるかどうかはわかりません。可能であれば、コンストラクターでこれを行うことを強くお勧めします。
これは私のクラスです:
public class MyClass1<TOrderBy> : MyInterface1<MyType1, MyType2>
{
public MyClass1(IEnumerable<Guid> ids) : this(ids, 0, 10, a => a.Time, ListSortDirection.Ascending) { }
public MyClass1(IEnumerable<Guid> ids, int pageIndex, int itemsPerPage, Expression<Func<MyType2, TOrderBy>> orderBy, ListSortDirection sortDirection)
{
this.pageIndex = pageIndex;
this.itemsPerPage = itemsPerPage;
this.orderBy = orderBy;
this.sortDirection = sortDirection;
this.ids = ids != null ? ids.ToList() : new List<Guid>();
}
}
エラーが発生します
Cannot convert expression type 'System.DateTime' to return type 'TOrderBy'
ホバーするときa => a.Time
エラーCannot convert lambda expression to delegate type 'System.Func<MyType2,TOrderBy>' because some of the return types in the block are not implicitly convertible to the delegate return type
とCannot implicitly convert type 'System.DateTime' to 'TOrderBy'
ビルド時のエラー。
おそらく解決できると思いますが、コンストラクターで情報を取得して IQueryable を並べ替えてページングするクラスを作成しようとしています。オーバーロードされたコンストラクターを介してデフォルトを提供したい。どうすればこれを行うことができますか?