Tag: 命名参数

如何定义命名参数C#

这似乎是一个简单的问题,但由于某种原因,我无法在任何地方找到答案。 基本上,我希望能够实现一个带NamedParameters的构造函数 。 通过命名参数,我不是指具有默认值(可选参数)的参数,例如: public SomeMethod(){ string newBar = Foo(bar2 : “customBar2”); } public string Foo(string bar1 = “bar1”, bar2 = “bar2” ){ //… } 我想要实现的一个很好的例子是System.Web.Mvc程序集中的AuthorizeAttribute 。 您可以使用以下方式: [Authorize(Roles = “Administrators”, Users = “ThatCoolGuy”)] public ActionResult Admin(){ } intellisense中构造函数的签名类似于以下示例,我相信(请确认)那些NamedParameters正在映射到类属性。 AuthorizeAttribute.AuthorizeAttribute( NamedParameters … )Initiliaze System.Web.Mvc.AuthorizeAttribute类的新实例 命名参数: 订单int 用户字符串 角色字符串

在重用SqlCommand和转换时,我应该调用Parameters.Clear吗?

我在ADO.NET中手动编写事务。 我正在使用的示例重用了SqlCommand ,这似乎是个好主意。 但是,我在命令中添加了参数。 我的问题是:在下面的代码中, command.Parameters.Clear()是否正确? 或者我做错了吗? using (var connection = new SqlConnection(EomAppCommon.EomAppSettings.ConnStr)) { connection.Open(); SqlTransaction transaction = connection.BeginTransaction(); SqlCommand command = connection.CreateCommand(); command.Transaction = transaction; try { foreach (var itemIDs in this.SelectedItemIds) { command.CommandText = “UPDATE Item SET payment_method_id = @batchID WHERE id in (@itemIDs)”; // IS THE FOLLOWING CORRECT? command.Parameters.Clear(); command.Parameters.Add(new SqlParameter(“@batchID”, batchID)); […]

使用命名参数动态调用方法

我们目前正在使用.NET 3.5,部分应用程序使用动态调用(使用MethodBase.Invoke ) 我想知道是否可以在命名参数(在.NET 4中)与动态调用混合,执行类似于: // Dictionary that holds parameter name –> object mapping var parameters = new Dictionary(); // Add parameters …. // Invoke where each parameter will match the one from the method signature. methodInfo.Invoke(obj, parameters); 是否有任何API允许此选项开箱即用? 如果没有,是否有可能开发一些解决方案来执行此操作? 编辑: 重新思考这个问题,听起来类似于编译器实际上需要匹配基于参数列表的方法调用。 也许有一些编译器API(或新的Roslyn项目)可以轻松地做到这一点? (没有自己编码,可能容易出错)。