私は以下のコードスニペットの汎用メソッドを記述しようとしましたが、OrderBy
節でエラーが出ますか?理由を教えてください。一般的な方法でエラーが発生する
var cache = RedisConnectorHelper.Connection.GetDatabase();
var values = JsonConvert.DeserializeObject<List<StateListDto>>(cache.StringGet(AppConsts.States));
if (values != null) return new ListResultOutput<StateListDto>(values.OrderBy(o => o.Name).ToList());
ジェネリックメソッド:
public ListResultOutput<T> GetCache<T>(string cacheKey)
{
var cache = RedisConnectorHelper.Connection.GetDatabase();
var values = JsonConvert.DeserializeObject<List<T>>(cache.StringGet(cacheKey));
return values != null ? new ListResultOutput<T>(values.ToList().OrderBy(o=>o.Name)) : null;
}
コール:
var values = GetCache<StateListDto>(AppConsts.States);
StateListDto.cs
public class StateListDto
{
public string Code { get; set; }
public string Name { get; set; }
}
それは、このエラーを与える:(フルサイズの画像を表示するにはクリック)
「一般的な」コードは、 'T'は' Name'プロパティを持っています。あなたは 'where T:StateListDto'制約を追加できましたが、それが_correct_であるかどうかは明らかではありません。 –
@DStanleyどうすればこの問題を解決できますか?何かアドバイス ? – Sampath
これはどのように一般的ですか?どんなタイプがサポートされるはずですか? – Amit