a7d*_*rew 38 c# resharper visual-studio
我正在寻找一种在编写代码时加速可重复任务的方法.我有ReSharper,我认为定制可以做我需要的.
我有两个相同类型的对象.我想将一个对象的所有公共属性复制到另一个对象.我想在这种情况下使用ReSharper工具为我生成代码.我会告诉它第一个对象和第二个对象的名称.我希望它找到第一个对象的所有公共属性,并将值复制到第二个对象.
这是我希望用ReSharper之类的工具生成的代码类型:
foo.Name = moo.Name;
foo.Age = moo.Age;
foo.City = moo.City;
Run Code Online (Sandbox Code Playgroud)
自动化这个从右到左复制值的简单代码可以节省大量时间,我认为ReSharper可以做到这一点.但是,我在搜索时没有看到任何弹出窗口.
我不是在寻找CodeSmith代码生成技术或T4模板,因为我只希望它在我的类中生成这些特定的行,而不是生成整个类或单独的文件.
有没有人知道按下几个按键的方法,输入上面的"foo"和"moo"对象名称并让工具从右到左的代码行生成这些副本?
更新:
我已经找到了一些关于构建ReSharper扩展的文档,这可能是通过该路径实现的,但它看起来真的很复杂.
http://www.jetbrains.net/confluence/display/ReSharper/PowerToys+Pack+3.0+User+Guide
除非其他人已经写过,否则这开始看起来像周末挑战.
Jes*_*ess 56
这真的很容易.ReSharper不会这样做,但你可以使用超级duper REGEX!
在Visual Studio中:
public string Email { get; set; }
public string CellPhone { get; set; }
public int NumChildren { get; set; }
public DateTime BirthDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
选择所有属性.点击CTRL-D即可复制.
现在点击CTRL-H替换.确保.*选中正则表达式匹配.
替换:( public [\w?]* (\w*) .* 此正则表达式可能需要调整)
附: dest.$1 = source.$1;
现在你有一些漂亮的代码可以放在你选择的方法中:
dest.Email = source.Email;
dest.CellPhone = source.CellPhone;
dest.NumChildren = source.NumChildren;
dest.BirthDate = source.BirthDate;
Run Code Online (Sandbox Code Playgroud)
Mat*_*ius 11
这有点来自于@Jess的回答(他的正则表达式在VS2013上对我不起作用)但是没有使用Visual Studio我正在使用regex101
点击上面的链接,然后将您的属性粘贴到Test string字段中,您将获得它们的映射.
正则表达式我用过
public [A-Za-z\?]* ([A-Za-z0-9]*) .*
并替换
Dest.$1 = Source.$1
希望这可以节省你一些时间.
我不相信Resharper可以做到这一点,但开源AutoMapper可以.AutoMapper新手?查看" 入门"页面.
| 归档时间: |
|
| 查看次数: |
8081 次 |
| 最近记录: |