如何向含params dynamic[]参数的CallDbStoredProcedure方法传参?
问题:如何向接收
params dynamic[]的方法传递不同类型参数? 我正在开发的应用里,之前的开发者编写了一个接收params dynamic[]参数的方法CallDbStoredProcedure。我熟悉dynamic类型,但不清楚如何向该方法传递参数。该方法定义如下:
public async Task CallDbStoredProcedure(string procedureId, string collectionName, params dynamic[] spParameters) { // Makes stored procedure call to Cosmos Db }
我推测使用dynamic是因为每个参数可以是不同类型,这也符合我的实际场景。我需要传入两个参数:
- Guid类型的
@itemId - int类型的
@statusId
请问该如何构造params dynamic[]参数并传入CallDbStoredProcedure方法?
解决方案
因为方法的最后一个参数使用了params关键字,你有两种简单的传参方式:
方式1:直接传入多个参数(推荐)
params关键字支持直接传入多个不同类型的参数,编译器会自动将它们打包成dynamic[]数组,无需手动构建:
Guid itemId = Guid.NewGuid(); int statusId = 1; await CallDbStoredProcedure("你的存储过程ID", "目标集合名称", itemId, statusId);
方式2:手动构造dynamic[]数组传入
如果需要动态生成参数列表(比如参数数量不固定的场景),可以先创建dynamic[]数组并赋值,再传入方法:
Guid itemId = Guid.NewGuid(); int statusId = 1; dynamic[] spParams = new dynamic[] { itemId, statusId }; await CallDbStoredProcedure("你的存储过程ID", "目标集合名称", spParams);
两种方式都能满足需求,第一种更简洁,适合参数数量固定的场景;第二种灵活性更高,适配参数动态变化的情况。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

