在函数签名中使用类型<t>的正确语法

时间:2016-02-27 05:32:49

标签: c# generics

是否有正确的方法来更改此功能签名:

 private IEnumerable<ViewPatient> TransformViewPatient(IOrderedQueryable<view_patient> query);

喜欢什么?

 private IEnumerable<ViewPatient> TransformViewPatient<T>(T query)

其中T是

IOrderedQueryable<view_patient>

编辑:我正在努力实现这样的目标:

 private IEnumerable<ViewPatient> TransformViewPatient<ObjectResult<view_patient>>(ObjectResult<view_patient> query)

 private IEnumerable<ViewPatient> TransformViewPatient<IOrderedQueryable<view_patient>>(IOrderedQueryable<view_patient> query)

1 个答案:

答案 0 :(得分:3)

IEnumerable<T> TransformViewPatient<T>(IOrderedQueryable<T> query)
    where T : ViewPatient

或更宽

IQueryable<T> TransformViewPatient<T>(IQueryable<T> query)
    where T : ViewPatient

或更宽

IEnumerable<T> TransformViewPatient<T>(IEnumerable<T> query)
    where T : ViewPatient

如果你有两种不同的类型:

IQueryable<T> TransformViewPatient<T, U>(IQueryable<U> query)
    where T : ViewPatient
    where U : view_patient

P.S。

view_patient对于一个班级来说真是个坏名字。

更新

如果你想要一个通用的集合,那么:

IEnumerable<T> TransformViewPatient<T, TColl>(TColl query)
    where T : ViewPatient
    where TColl : IQuerable<T>