public async Task<List<News>> GetAllAsync(DateTime from,
string orderBy = "-published",
DateTime to = new DateTime(),
int page = 1
int category = 0,
int[] tags = null,
int perPage = 10)
例如,在http服务中获取新闻
并且在几乎每个服务中都有很多查询参数。
我是否必须为每个人创建一个单独的类?
答案 0 :(得分:1)
您的问题被标记为xamarin
相关,因此我将从这个角度提出问题:
如果您打算定位Xamarin.iOS,那么无法使用c#dynamic
功能。当你使用dynamic
关键字时,这会触发c#编译器在幕后生成一些隐藏的代码(你可以通过使用IL反汇编程序查看我所说的内容),并且该代码使用了从DLR构造,称为CallSite
。这些CallSite对象反过来在内部使用DynamicMethod
,以处理强类型dynamic
引用的魔力。 DynamicMethod
是一种在运行时生成可运行代码的优化机制。
iOS不允许在运行时生成可运行的代码。
所以你的应用程序可以在iOS模拟器上运行(没有这个限制),但在真实设备上会失败。
我在这个功能的内部工作方面有一些(旧的)博客文章,这应该很明显你不能在iOS平台上使用它,因为Apple对代码发出的限制:
http://www.wintellect.com/devcenter/krome/dynamic-objects-and-call-sites
http://www.wintellect.com/devcenter/krome/getting-to-know-dynamicmethod
您也不能使用匿名对象,因为无法在函数范围之外导出匿名类型定义。换句话说,它们无法显示在您的方法签名中。
我担心你唯一可行的选择是你的函数有很多重载,或者定义一个强大的选项类(或类的层次结构)来处理你需要的所有变种。