在我正在开发的应用程序中,一位前开发人员创建了一个需要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
参数数组由编译器隐式创建:但如果你真的愿意,你也可以这样做:
...但这通常是不可取的,因为对于
params
数组,被调用者方法通常假定数组的所有权(因此可以改变它),而如果调用者有对其的命名引用(特别是在async
调用站点中),他们可以这样做拉地毯。您可以创建动态对象数组来表示参数,然后将它们传递给 CallDbStoredProcedure 方法。以下是使用您的特定场景的示例: Guid itemId = Guid.NewGuid(); int 状态ID = 42;
确保将“YourProcedureId”和“YourCollectionName”替换为该方法的 procedureId 和 collectionName 参数所需的实际值。
调用它非常容易。任何类型和任何长度的动态参数都可以传递给此方法,例如