No aplicativo em que estou trabalhando, um ex-desenvolvedor criou um método que espera params dynamic[]
parâmetros. Estou familiarizado, dynamic
mas não tenho certeza de como enviar parâmetros para esta função.
O método que estou tentando chamar é assim:
public async Task CallDbStoredProcedure(string procedureId, string collectionName, params dynamic[] spParameters)
{
// Makes stored procedure call to Cosmos Db
}
Presumo que ele usou dynamic
porque cada parâmetro pode ser de um tipo diferente, o que é o caso no meu cenário específico.
Preciso enviar dois parâmetros:
@itemId
que é umGuid
valor@statusId
que é umint
valor
Como faço para criar isso params dynamic[]
com os valores dos meus parâmetros para poder enviá-lo ao CallDbStoredProcedure()
método?
Você não precisa criar nada:
params
os arrays de parâmetros são criados implicitamente pelo compilador:Mas se você realmente quiser, também pode fazer isso:
... mas isso geralmente é desaconselhável porque com
params
matrizes, o método chamado geralmente assume a propriedade da matriz (e, portanto, pode alterá-la), ao passo que se o chamador tiver uma referência nomeada para ela (especialmente em umasync
site de chamada), eles poderiam fazer um puxão de tapete.Você pode criar uma matriz de objetos dinâmicos para representar seus parâmetros e depois passá-los para o método CallDbStoredProcedure. Aqui está um exemplo usando seu cenário específico: Guid itemId = Guid.NewGuid(); int statusID = 42;
Certifique-se de substituir "YourProcedureId" e "YourCollectionName" pelos valores reais necessários para os parâmetros procedureId e CollectionName do método.
É muito fácil chamá-lo. parâmetros dinâmicos de qualquer tipo e comprimento podem ser passados para este método como