将参数动态[]值发送到方法

问题描述 投票:0回答:1

在我正在开发的应用程序中,一位前开发人员创建了一个需要

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()
方法?

c# azure-cosmosdb
1个回答
0
投票

您不需要创建任何东西:

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
数组,被调用者方法通常假定数组的所有权。

© www.soinside.com 2019 - 2024. All rights reserved.