如何编写 C# 函数以接受可变数量的参数?

2023-12-14

我有一个 C# 方法,我想用它来更新一些数据。该方法可以传递一个字符串、一个双精度数、一个整数

public void Update(string ac, string pr, string fld, Int32 intVal = null, double dblVal = null, string strVal = null)
{

根据 fld 的值,我想更新表中的某个字段名称。

有没有什么方法可以对函数参数进行编码,这样我就不必提供一长串可能的值类型?

理想情况下,我希望能够像这样调用这个函数:

Update("key1", "key2", "location", "London");
Update("key1" , "key2", "beds", 2);
Update("key1" , "key2", "price", 123.45);

然后在函数更新中我想要:

public void Update(string ac, string pr, xxx, yyy)
    {
        try
        {
            vm.Product = _product.Get(ac, pr);
            vm.Product.xxx = yyy;
            _product.AddOrUpdate(vm.Product);
        }
        catch (Exception e) { log(e); }
    }

在 xxx 中,我想给出字段名称和 yyy 实际值。也许在函数内部我可以使用基于字段名称的 case 方法进行某种类型的转换。我只有少量字段名称,因此这很容易。另外,也许有一种方法可以从 vm 类的反射中找到数据类型,但这远远超出了我的知识范围。


EDIT

看起来您想传递一个属性名称和一个值。一点点反思应该会让这变得容易:

public void Update(string ac, string pr, string propertyName, object Value) {
    try {
        vm.Product = _product.Get(ac, pr);
        vm.Product.GetType().GetProperty(propertyName).SetValue(vm.Product, value, null);
        _product.AddOrUpdate(vm.Product);
    }
}

END EDIT

params 数组允许您的方法接受可变数量的参数

public void Update(string ac, string pr, params object[] arguments)

可以用上面的任何示例来调用它

Update("key1", "key2", "location", "London");
Update("key1" , "key2", "beds", 2);
Update("key1" , "key2", "price", 123.45);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何编写 C# 函数以接受可变数量的参数? 的相关文章

  • Hololens 应用程序将不再构建 - 引用元数据文件丢失且找不到 c-Sharp.firstpass

    我已按照 Microsoft 在其多个项目下列出的确切步骤进行操作微软全息 学院 https developer microsoft com en us windows holographic academy教程 我完成了所有这些 并且从创
  • 创建文件并使用内存流保存到其中

    如何创建文件并使用内存流写入文件 我需要使用内存流来防止其他线程尝试访问该文件 我试图保存到文件的数据是 html 如何才能做到这一点 假设您的意思是如何将文件的内容复制到内存流 如果您使用的是框架4 var memoryStream ne
  • 为什么我需要显式编写“auto”关键字?

    我正在从 C 98 转向 C 11 并且已经熟悉了auto关键词 我想知道为什么我们需要明确声明auto编译器是否能够自动推导类型 我知道 C 是一种强类型语言 这是一条规则 但如果不显式声明变量就不可能实现相同的结果auto 放弃显式的a
  • JQuery、ASCX 和 webmethods 似乎不起作用

    我有一个级联下拉列表 其中 3 个 类型 类别和子类别 首先类型负载 然后选择类型 类别负载以及选择类别 子类别负载 我还有 2 个按钮 添加类别 和 添加子类别 单击这些按钮后 我调用 JQuery 模态表单来添加它们 我在代码后面使用
  • 如何在 ASP.Net Core 6 Web Api 中依赖注入 Microsoft Graph 客户端

    我正在尝试使用 ASP Net Core 6 设置 Web api 以便用户可以到达我的端点 然后我使用特权帐户在 Teams 中执行一些工作 我认为我没有正确连接 DI 部分 因为在向 Teams 发出请求时出现以下错误 MsalUiRe
  • 在 TPL Dataflow 中,是否可以在创建块之后但使用之前更改 DataflowBlockOptions?

    有效果吗 我想推迟设置 ExecutionDataflowBlockOptions SingleProducerConstrained 属性 直到我准备好将网络链接在一起 因为 我想将创建块及其语义与将网络及其语义链接在一起分开 但据我所知
  • 如何有效地测试action是否用属性(AuthorizeAttribute)修饰?

    我正在使用 MVC 并且有一种情况OnActionExecuting 我需要确定即将执行的Action方法是否用属性修饰 AuthorizeAttribute尤其 我不是问授权是否成功 失败 而是问该方法是否需要授权 对于非 MVC 人员
  • 使用 R.Net 版本 1.5.5 创建 REngine 实例

    我正在尝试创建一个 Hello World 示例R Language using R Net版本1 5 5 从 NuGet 加载 不幸的是 我见过的在线示例都不起作用 这就是我所做的 已安装Microsoft R Open 3 2 4 增强
  • 如何使用平台调用编组 void*

    我需要从 dll 中包含的 C api 调用函数 函数原型如下 int func char name void value 其中指针值的内容可以引用依赖于传递的名称的任何类型 我不确定如何设置 Dll 输入端口以正确编组此 void 我一直
  • 有没有办法使用 ews c# 确定电子邮件是否是回复/响应?

    我正在编写一个支持系统 这是我第一次使用 EWS 到目前为止 我已经相当成功了 我可以提取我需要的信息 发送电子邮件 一切正常 我确实有点头疼 有没有办法判断电子邮件是否实际上是回复 该应用程序的基本思想是有人发送电子邮件 我们回复并给他们
  • ICSharpCode.Decompiler + Mono.Cecil -> 如何为单个方法生成代码?

    我可以使用 Mono Cecil 和 ICSharpCode Decompiler 生成类型或程序集的代码 但是 如果我尝试为单个方法生成代码 我将收到错误 对象引用未设置为对象的实例 你们能给我任何关于这个的提示吗 提前感谢您的所有帮助
  • 有没有一种方法可以在 TreeView.Nodes 集合中搜索 TreeNode.Text 字段?

    像这样 TreeNode treeNodes treeView Nodes Find searchString true 但我希望它在text字段而不是name field 我不知道有任何内置方法 但你可以使用 LINQ TreeNode
  • 如何检查我的程序是否有数据通过管道传输到其中

    我正在编写一个应该通过标准输入读取输入的程序 所以我有以下结构 FILE fp stdin 但是 如果用户没有将任何内容通过管道传输到程序中 这就会挂起 我如何检查用户是否确实将数据通过管道传输到我的程序中 例如 gunzip c file
  • 如何将8字节的十六进制数输入到char数组中?

    我想生成以以下开头的十六进制数字序列07060504003020100 下一个数字是0f0e0d0c0b0a0908等等按这个顺序 当我使用unsigned long long int并输出数据的前4位 这意味着0被截断 它打印706050
  • ASP Net Core 属性路由和双正斜杠

    正如所指出的here https stackoverflow com a 20524044 3129340 URL 中包含双斜杠是有效的 我有一个使用属性路由的 ASP Net Core 项目 一个名为GroupController用于处理
  • 更改为通用接口对性能的影响

    我使用 Visual Studio 使用 C NET 开发应用程序 ReSharper 在我的方法原型中经常建议我用更通用的类型替换输入参数的类型 例如 如果我仅在方法主体中使用带有 foreach 的列表 则使用 List 和 IEnum
  • 在另一个类中使用一个类对象?

    我正在用 c 制作应用程序 在该应用程序中 我有一个类DataCapture cs 在同一个应用程序中 我有另一个类Listner cs 在 Listner cs 类中 我想使用以下对象DataCapture cs不创建新对象DataCap
  • 如何使用 C# 以编程方式识别对方法的引用数量

    我最近继承了需要一些修剪和清理的 C 控制台应用程序 长话短说 该应用程序由一个包含超过 110 000 行代码的类组成 是的 单个类中有超过 110 000 行 当然 该应用程序是我们业务的核心 全天候运行更新动态网站上使用的数据 尽管我
  • 如何通过反射获取透明代理的属性值?

    我的代码接收透明代理而不是原始实例 虽然这var type obj GetType 产生原始类的类型 下面的代码抛出TargetException 对象与目标类型不匹配 var value property GetValue obj nul
  • 从 C# 应用程序调用 ASP.net Web 服务

    我有个问题 我如何调用 Web 服务并从 C 桌面应用程序获取结果 我正在制作一个桌面应用程序 我希望它能够连接到我的在线 ASP net Web 服务 这怎么可能 在 解决方案资源管理器 中 右键单击项目节点并选择 添加 Service参

随机推荐

  • 如何在不设置行高的情况下设置div中的行间距

    我有一个包含显示设置为内联块的元素的 div 这些包含的元素具有不同的高度 div 中生成的行具有不同的高度 具体取决于其中元素的高度 这就是我想要的 但我想在 div 的行之间添加一些空格 例如 具有背景颜色设置的相邻行中的元素之间应该有
  • 如何做相当于“限制不同”?

    如何将结果集限制为n给定列的不同值 其中实际行数可能更高 输入表 client id employer id other value 1 2 abc 1 3 defg 2 3 dkfjh 3 1 ldkfjkj 4 4 dlkfjk 4 5
  • 如何使用 ms sql 进行更新和排序

    理想情况下我想这样做 UPDATE TOP 10 messages SET status 10 WHERE status 0 ORDER BY priority DESC 中文 我想从数据库获取前 10 条可用 状态 0 消息并锁定它们 状
  • SQL Server 中临时表的范围

    我编写了一个存储过程来将数据从一个数据库导入和转换到另一个数据库 每次导入都会采用一个公司 ID 并导入与该公司相关的所有数据 为了帮助完成转换步骤 我使用临时表 作为脚本审查的一部分 我被告知要使用表变量而不是临时表 审阅者声称 如果我们
  • NSOpenPanel 在 Mac OSX 10.9 上需要更长的时间

    在 Mac OSX 10 9 上 我在我的应用程序中遇到 NSOpenPanel 问题 NSopenpanel 首次启动需要较长时间 我观察到 NSOpenPanel openPanel 第一次执行需要更长的时间 因此 第一次启动需要一些延
  • 与 mongodb 3.6 兼容的 documentdb 中的“功能不支持:$text”

    您好 我正在使用具有 mongodb 3 6 兼容性的 AWS documentDB 但在下面的函数中遇到了提到的错误 我不知道如何解决这个问题 索引创建 ScenarioSchema index friendlyId text steps
  • gh-pages -d 构建在“npm run deploy”上失败

    我正在尝试将我的 React 应用程序部署到 GitHub 页面 但遇到以下错误 The build folder is ready to be deployed To publish it at https jatinkumarg git
  • CodeIgniter 中不区分大小写的路由

    我已将其写入 CodeIgniter 的路由器中 route companyname profile 1 这工作正常 但是当我在 URL 中输入 CompanyName 时 它就不起作用了 这是因为大写字符 我想让这个路由不区分大小写 请建
  • 反序列化json对象不起作用

    我想将我的 json 对象反序列化到我的学生班级 var result JsonConvert DeserializeObject
  • Magento 主题中左栏的块类型是什么?

    我正在开发一个自定义 Magento 1 3 主题 并且想要添加一个左栏 我已经使用 html 创建了 template page html left phtml 在 2columns left phtml 中 我添加了以下内容 在 pag
  • 优化问题——寻找最大值

    我手头有一个问题可以简化为这样 假设二维平面 X Y 中有一堆随机点 其中对于每个 Y X 上可能有多个点 对于每个 X Y 上可能有多个点 每当选择一个点 Xi Yi 时 就不能选择其他 X Xi OR Y Yi 的点 我们必须选择最大点
  • onFormSubmit 触发器大约每隔几周随机发生两次

    首先 我想说这个问题与之前所有 Google Apps 脚本的表单提交触发器错误不同 这个触发两次 同时仍然可以访问前一个表单提交的所有表单提交信息 并再次触发程序 此外 额外的表单提交触发故障不会在电子表格表单响应中添加一行 这是因为用户
  • 在 Visual Studio 中安装/连接后,实体框架连接到 SQL Server Express 时出错

    为了以防万一我做错了什么 我上传了一个视频 这样你就可以看到我所做的每一步 我能够重现这个错误 视频链接 基本上 启动一个新的 MVC 3 项目并在一个简单的类上以正常方式使用 EF 我使用了以下连接字符串
  • mysql事务(提交和回滚)

    下面是我用于 MySqlTransaction 的代码 它运行完美 但问题是 因为我使用的是 mysqlcommand 的单个实例 所以我必须在其中使用唯一的参数 这毁了我的查询 有没有其他办法可以做 我尝试在每次查询后处理 cmd 但没有
  • 在 C# 中将参数传递给水晶报表的步骤

    你能告诉我在 C win 形式中向水晶报表 13 传递参数的步骤是什么吗 my code getting and set dataset to report string sql select from dbo Trading Order
  • Javascript:四舍五入 100 [重复]

    这个问题在这里已经有答案了 我正在尝试将数字四舍五入到 100 Example 1340 should become 1400 1301 should become 1400 and 298 should become 300 200 sh
  • 使用 Scope_Identity() 的正确方法/位置

    我的一个字段中有一个名为 deviceID 的自动递增 ID 我想将其传递给 php 中的会话以供稍后使用 并计划使用scope identity 据我了解 这是获取当前主键 ID 的最佳方法 然而 每当我尝试使用它时 我都会收到一条错误消
  • 在键上加入 Spark 数据帧

    我构建了两个数据框 我们如何连接多个 Spark 数据帧 例如 PersonDf ProfileDf与一个共同的列personId作为 键 现在我们如何才能将一个 Dataframe 组合起来PersonDf and ProfileDf 使
  • Chrome 全屏 API

    根据本文Google Chrome 15 具有全屏 JavaScript API 我试图让它发挥作用但失败了 我也找过官方文档无果 全屏 JavaScript API 是什么样的 该API仅在用户交互期间起作用 因此不能被恶意使用 尝试以下
  • 如何编写 C# 函数以接受可变数量的参数?

    我有一个 C 方法 我想用它来更新一些数据 该方法可以传递一个字符串 一个双精度数 一个整数 public void Update string ac string pr string fld Int32 intVal null doubl