Tag: 参数

使用具有“params”参数的reflection调用函数(MethodBase)

我有两个函数的MethodBases: public static int Add(params int[] parameters) { /* … */ } public static int Add(int a, int b) { /* … */ } 我有一个通过我制作的类调用MethodBases的函数: MethodBase Method; object Target; public object call(params object[] input) { return Method.Invoke(Target, input); } 现在,如果我AddTwoMethod.call(5, 4); 它工作正常。 但是,如果我使用AddMethod.call(5, 4); 它返回: 未处理的exception:System.Reflection.TargetParameterCountException:参数与签名不匹配 是否有任何方法可以使两个调用都正常工作而无需手动将参数放入数组中用于params int[] ?

C#参数化查询MySQL带有`in`子句

我正在将几个硬编码的查询转换为应用程序并立即构建到参数化查询。 我遇到一个特定查询的问题,它有一个in子句: UPDATE TABLE_1 SET STATUS = 4 WHERE ID IN (1, 14, 145, 43); 第一个参数很简单,因为它只是一个普通的参数: MySqlCommand m = new MySqlCommand(“UPDATE TABLE_1 SET STATUS = ? WHERE ID IN (?);”); m.Parameters.Add(new MySqlParameter(“”, 2)); 但是,第二个参数是一个整数列表,表示需要更新的行的ID。 如何传递单个参数的整数列表? 或者,您将如何设置此查询,以便您不必在每次调用它时完全构建它,并且可以防止SQL注入攻击?

我何时以及为什么要使用ClassName:this(null)?

我无法理解简单裸露之间的区别 Public ClassName() {} 和 Public ClassName() : this(null) {} 我知道只有当我有+1重载的ctor时我才能使用它,但是我无法理解以这种方式defining the parameterless constructor的优点。

C#params关键字与两个相同类型的参数

我今天刚遇到C#的东西,我以前没想过。 我class上有两种方法,一种是另一种方法的重载。 它们被声明如下: public void RequirePermissions(params string[] permissions)… public void RequirePermissions(string message, params string[] permissions)… 在我的代码中,我试着像这样调用第一个: RequirePermissions(“Permission1”, “Permission2”); …期待它调用第一个重载。 好吧,它称为第二次超载。 在这种情况下,我可以让它调用第一个方法的唯一方法是手动传递一个string[]对象,如下所示: RequirePermissions(new string[] { “Permission1”, “Permission2” }); 现在,这种行为并不会让我感到困惑,因为我知道编译器无法根据我提供的参数告诉我实际想要调用哪种方法。 但我不小心这可能在我的代码中被忽视了。 似乎微软应该在遇到上述情况时让编译器抛出错误。 有没有人对此有任何想法? 除了我发布的“解决方案”之外,还有另一种方法可以调用第一个过载吗?

是否可以使参数实现两个接口?

是否可以定义一个接受必须实现两个接口的参数的函数? (这两个接口是我刚想起的那个接口;不是我想要使用的接口) private void DoSomthing(IComparable, ICollection input) { }

带参数的单身人士

我需要一个单例类来实例化一些参数。 我现在这样做的方式是: class SingletonExample { private SingletonExample mInstance; //other members… private SingletonExample() { } public SingletonExample Instance { get { if (mInstance == null) { throw new Exception(“Object not created”); } return mInstance; } } public void Create(string arg1, string arg2) { mInstance = new SingletonExample(); mInstance.Arg1 = arg1; mInstance.ObjectCaller = new ObjectCaller(arg2); //etc… basically, […]

如何通过ADO.NET/C#使用Array / Table参数到Oracle(ODP.NET 10g)?

这个问题的答案很好,但我正在寻找能够将数组或表发送到Oracle过程的ADO.NET代码,然后在过程中使用该表。 在SQL Server表值参数中,它非常简单: CREATE TYPE [dbo].[IntTable] AS TABLE( [intvalue] [int] NOT NULL, PRIMARY KEY CLUSTERED ( [intvalue] ASC )WITH (IGNORE_DUP_KEY = OFF) ) GO CREATE PROCEDURE dbo.UseTable @SomeInt INT ,@IntTable dbo.IntTable READONLY AS BEGIN — Do whatever using @SomeInt and @IntTable like: INSERT INTO Assignments (masterid, childid) SELECT @SomeInt, intvalue FROM @IntTable END GO 然后在客户端: […]

C#SqlParameters短手

我正在获取Record对象List的数据并将其内容放入数据库中: // Processes a Record and adds it to the database public bool addRecord(SqlConnection db, List recordsToAdd) { using (SqlCommand command = db.CreateCommand()) { foreach (Record record in recordsToAdd) { // Set the query command text command.CommandText = @”INSERT INTO SMDGROUP_STPRODMASTER (PRODCODE, TOTFREE, TOTPHYS, ITEMTYPE, PRODESC) VALUES (‘@PRODCODE’, ‘@TOTFREE’, ‘@TOTPHYS’, ‘@ITEMTYPE’, ‘@PRODESC’)”; SqlParameter param1 = […]

带有IN语句的Oracle参数?

得到了我需要修改的#.net应用程序。 此刻的查询有效地做到了这一点: select * from contract where contractnum = :ContractNum (非常简化,只是为了表明我们使用的是=和一个参数) 该参数是从C#app上的Settings.Settings文件中读取的,并且其中包含一个字符串。 我需要修改它以包含多个合同,所以我想我可以将SQL更改为: select * from contract where contractnum in (:ContractNum) 但无论我如何格式化参数中的字符串,都不会返回任何结果。 有没有办法让oracle用参数做一个IN? 任何帮助表示感谢,谢谢大家。

在SELECT IN中使用Oracle参数的问题

在sql查询中插入一串数字时遇到问题 SELECT * FROM tablename a WHERE a.flokkurid IN (3857,3858,3863,3285) ORDER BY sjodategund, rodun …要么: SELECT * FROM tablename a WHERE a.flokkurid IN (:strManyNumbers) ORDER BY sjodategund, rodun …使用此代码: using (OracleCommand sel = new OracleCommand(SQL, connectionstring)) { sel.Parameters.Add(“:strManyNumbers”, OracleDbType.Varchar2, “Client”, ParameterDirection.Input); } 所以,如果我运行此查询,我得到: ORA-01722:无效的号码 但如果我只插入一个数字,即“3857”,它将返回查询确定数据。