在我正在开发的应用程序中,一位前开发人员创建了一个需要
params dynamic[]
参数的方法。我熟悉 dynamic
但不知道如何向此函数发送参数。
我尝试调用的方法如下所示:
public async Task CallDbStoredProcedure(string procedureId, string collectionName, params dynamic[] spParameters)
{
// Makes stored procedure call to Cosmos Db
}
我假设他使用了
dynamic
,因为每个参数可以是不同的类型,这就是我的特定场景中的情况。
我需要发送两个参数:
@itemId
这是一个 Guid
值@statusId
这是一个 int
值如何使用我的参数值创建此
params dynamic[]
,以便我可以将其发送到 CallDbStoredProcedure()
方法?
您不需要创建任何东西:
params
参数数组由编译器隐式创建:
Guid itemId = new Guid( "5fb75eac-9f0b-550c-339f-fc21fde966cd" );
Int32 statusId = 123;
await CallDbStoredProcedure( procedureId: "PerformPhilately", collectionName: "my stamp collection", itemId, statusId );
但是如果你真的想要的话,你也可以这样做:
dynamic[] arr = new dynamic[] { itemId, statusId };
await CallDbStoredProcedure( procedureId: "PerformPhilately", collectionName: "my stamp collection", spParameters: arr );
...但这通常是不可取的,因为对于
params
数组,被调用者方法通常假定数组的所有权。