当前位置:  开发笔记 > 编程语言 > 正文

是否有方法在Visual Studio中交换一组表达式的左侧和右侧?

如何解决《是否有方法在VisualStudio中交换一组表达式的左侧和右侧?》经验,为你挑选了1个好方法。

我有一个相当大的数据集,需要存储在活动记录中.为了预填充页面上的表单字段,我已经编写了以下代码:

Device device = new Device(DeviceID); // device is simply the active record

txtDeviceName.Text = device.Name;
txtNotes.Text = device.Notes;
txtHostName.Text = device.Hostname;
txtAssetTag.Text = device.AssetTag;
txtSerialNumber.Text = device.SerialNumber;
// snip... the list goes on!

是否存在某种方法(内置功能,宏等),我可以使用它来交换表达式的每一面,以便将数据保存到活动记录中,而不是从中读取数据以执行数据库插入?例如,在突出显示上述代码并运行宏之后,它将变为:

device.DeviceName = txtDeviceName.Text;
device.Notes = txtNotes.Text;
device.Hostname = txtHostName.Text;
device.AssetTag = txtAssetTag.Text;
device.SerialNumber = txtSerialNumber.Text;
// snip again...

由于此活动记录封装的数据库中的列数相当大,因此通过简单的自动化过程可以避免大多数此类型的输入.

显然,这是行不通的100%,因为有时候必须是类型转换(例如intstring),但在大多数情况下,我认为,这将节省大量的时间.



1> Andrew Hare..:

这是一个将执行此操作的宏:

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports System.Diagnostics
Imports System.Text.RegularExpressions

Public Module Helpers
    Sub SwapAssignment()
        If (Not IsNothing(DTE.ActiveDocument)) Then
            Dim selection As TextSelection = CType(DTE.ActiveDocument.Selection, TextSelection)
            selection.Text = Regex.Replace(selection.Text, "([^\s]*)\s*=\s*([^\s]*);", "$2 = $1;")
        End If
    End Sub
End Module

基本上它采用所选文本(选择一行或多行)并使用正则表达式来交换值.不漂亮,但宏从来都不是.

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有