私はカスタムJsonConverterを使用しています。そして、私はオブジェクトの型を取得し、ジェネリックパラメータとして設定する必要があります。実行時に一般的なPatameter Tを設定する方法
public class PagedResultConverter : Newtonsoft.Json.JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var pagedList = (IPagedList<T>)value;
var jsonJObject = new JObject
{
{"TotalCount", pagedList.TotalCount}
}
jsonJObject.WriteTo(writer);
}
}
マイIPagedList<T>
パラメータT
はtypeof(value)
の型になります。しかし、私はプロパティ、インターフェイスのメンバーを取得する必要がありますIPagedList<typeof(value)>
を設定することはできません。
どうすればいいですか?
あなたはできません。すでに気づいているように、 'T'は*コンパイル時*型ですが、* runtime *では実際の型を提供します。あなたは*実行時*であなたが提供するものを*コンパイラがどのように知るべきですか?ただし、https://stackoverflow.com/questions/232535/how-do-i-use-reflection-to-call-a-generic-method – HimBromBeere
をご覧ください。何を達成しようとしていますか?おそらく、あなたがしたいことをする別の方法があります。 – Kote
'typeof(value)'はコンパイル時に 'object'になります。おそらくあなたが意味するのは 'value.GetType()'です。しかし、あなたの問題を助けることはありません。 – nvoigt