gpt4 book ai didi

c# - ReSharper 能否生成将属性从一个对象复制到另一个对象的代码?

转载 作者:IT王子 更新时间:2023-10-29 04:00:56 26 4
gpt4 key购买 nike

我正在寻找一种在编写代码时加速可重复任务的方法。我有 ReSharper,我认为自定义可以满足我的需要。

我有两个相同类型的对象。我想将一个对象的所有公共(public)属性复制到另一个对象。我希望工具(在本例中为 ReSharper)为我生成代码。我将告诉它第一个对象和第二个对象的名称。我希望它找到第一个对象的所有公共(public)属性并将值复制到第二个对象。

这是我希望使用 ReSharper 等工具生成的代码类型:

foo.Name = moo.Name;
foo.Age = moo.Age;
foo.City = moo.City;

将这个从右向左复制值的简单代码自动化将节省大量时间,我认为 ReSharper 可以做到这一点。但是,我在搜索它时没有看到任何弹出窗口。

我不是在寻找 CodeSmith 代码生成技术或 T4 模板,因为我只希望它在我的类中生成这些特定行,而不是生成整个类或单独的文件。

有谁知道按几下键,在上面输入“foo”和“moo”对象名称,然后让工具从右到左生成这些代码行的副本?

更新:

我找到了一些关于构建 ReSharper 扩展的文档,这可能可以通过该路径实现,但它看起来确实涉及。

http://www.jetbrains.net/confluence/display/ReSharper/PowerToys+Pack+3.0+User+Guide

这开始看起来像是一个周末挑战,除非其他人已经写好了。

最佳答案

这真的很容易。 ReSharper 不会这样做,但您可以使用 super 骗子 REGEX!

在 Visual Studio 中:

    public string Email { get; set; }
public string CellPhone { get; set; }
public int NumChildren { get; set; }
public DateTime BirthDate { get; set; }
  1. 选择您的所有属性。按 CTRL-D 向下复制。

  2. 现在按 CTRL-H 替换。确保选择 .* 进行正则表达式匹配。

  3. 替换:public [\w?]* (\w*) .*(此正则表达式可能需要调整)

  4. 使用:dest.$1 = source.$1;

现在您有了一些漂亮的代码,您可以将其放入您选择的方法中:

    dest.Email = source.Email;
dest.CellPhone = source.CellPhone;
dest.NumChildren = source.NumChildren;
dest.BirthDate = source.BirthDate;

编辑:新的选择

  1. 您可以使用 AutoMapper 进行动态运行时映射。
  2. Mapping Generator非常适合静态映射。它可以生成上面的代码,并且可以很好地与 R# 配合使用。

关于c# - ReSharper 能否生成将属性从一个对象复制到另一个对象的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1228194/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com