通常在 C# 中的许多位置集成一行代码
本文关键字:代码 一行 集成 位置 许多 | 更新日期: 2023-09-27 18:31:31
好的,这是我的代码段
MySqlConnection conn = new MySqlConnection("Userid=root;pwd=root;port=3306;host=localhost;database=test");
conn.Open();
由于我正在使用的新版本 devart 连接器存在一些问题,我必须添加一行代码OldCompatibility.BinaryAsString = true;
在我的代码中无处不在,如下所示
OldCompatibility.BinaryAsString = true;
MySqlConnection conn = new MySqlConnectio("User id=root;pwd=root;port=3306;host=localhost;database=test");
conn.Open();
但问题是我必须在我的应用程序中进行此更改,这些应用程序有许多包含这段代码的页面。那么有没有办法全局执行此操作,这样我就不必在整个应用程序中进行此更改。我正在使用 Devart 连接器 6
假设您的连接每次都远程相似;不要。将所有连接逻辑保存在一个共享方法中,并使用它,而不是到处重复连接代码。
public static MySqlConnection Connect() {
OldCompatibility.BinaryAsString = true;
MySqlConnection conn = new MySqlConnection("User id=root;pwd=root;port=3306;host=localhost;database=test");
conn.Open();
return conn;
}
MySqlConnection 是你的自定义类,如果你把 OldCompatibility .BinaryAsString = true 放在 MySqlConnection 的构造函数中,那么它就可以工作
使用正则表达式查找和替换一次更改所有代码:
1.- 按 Ctrl+H 打开"查找和替换"窗口 输入您的搜索,将换行符替换为"'"(无引号)
2.-展开"查找选项"并选中"使用",选择"正则表达式"(这也激活了"查找内容"框旁边的右箭头。它列出了一些命令/快捷方式)。
例如:在查找时键入以下内容:
{MySqlConnection conn = new MySqlConnection}
然后尝试这个替换:
OldCompatibility.BinaryAsString = true;'n't't'1 MySqlConnection conn = new MySqlConnection
这将找到与搜索匹配的所有代码,并在其前面添加一行。请注意占位符 {...} 被替换为 ''1
您可以使用工厂方法
public class FactoryMethods
{
public static MySqlConnection GetConfiguredConnection()
{
OldCompatibility.BinaryAsString = true;
MySqlConnection conn = new MySqlConnectio("User id=root;pwd=root;port=3306;host=localhost;database=test");
conn.Open();
return conn;
}
}
并假设连接是可识别的
using (var myConn = FactoryMethods.GetConfiguredConnection())
{
// Use your connection here
}
你真的应该考虑@minitech关于使用方法的建议,但如果你真的无法在任何地方更改代码,我只能看到两个选项;
-
将MySQLConnection扩展到另一个命名空间中使用相同的名称的新类,只需更改构造函数以包含您的行即可。然后仅替换文件顶部的
using
行。 -
如果无法做到这一点,请以相同的方式实现包装类。
这两个选项都可能无法工作(例如,如果类是最终的,则为 #1,如果类作为参数传递给任何函数,则为 #2),但除非你至少可以进行全局搜索/替换或使用方法实现@minitech的建议,否则我看不到任何其他方法。