前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用 Resharper 快速做适配器

使用 Resharper 快速做适配器

作者头像
林德熙
发布于 2018-09-18 11:55:07
发布于 2018-09-18 11:55:07
50000
代码可运行
举报
文章被收录于专栏:林德熙的博客林德熙的博客
运行总次数:0
代码可运行

如果需要做一个类的重写,需要重新写这个类的所有属性和函数,本文提供一个简单的方法让大家快速重写一个类的所有属性和函数。

在有 Resharper 之后,对一个比较长的类进行重构。例如有这个类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   class Foo
    {
        public string F1 { get; set; }

        public void F2()
        {

        }
    }

来写出这个类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    class Foo1
    {
        private Foo _foo;

        public Foo1(Foo fooImplementation)
        {
            _foo = fooImplementation;
        }

        public string F1
        {
            get { return _foo.F1; }
            set { _foo.F1 = value; }
        }

        public void F2()
        {
            _foo.F2();
        }
    }

难道需要自己全部写一遍?实际上可以使用这个方法来快速写。

使用 ctrl+shift+R 把 Foo 弄出一个接口

可以看到接口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    internal interface IFoo
    {
        string F1 { get; set; }
        void F2();
    }

写另外的类继承这个接口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   class Foo1 : IFoo
    {
        private IFoo _foo;

        public Foo1(IFoo foo)
        {
            _foo = foo;
        }
    }

在这个类按 alt+insert 可以看到 Delegating Members ,点击

这样就可以拿到这个类的所有属性和函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    class Foo1 : IFoo
    {
        public void F2()
        {
            _foo.F2();
        }

        private IFoo _foo;

        public Foo1(IFoo foo)
        {
            _foo = foo;
        }

        public string F1
        {
            get => _foo.F1;
            set => _foo.F1 = value;
        }
    }

如果需要复制一个类,可以使用 ctrl+shift+R 点击 Copy Type

复制一个类可以复制静态属性、方法,拿到类的接口不能获得静态的属性方法。


本文会经常更新,请阅读原文: https://lindexi.gitee.io/lindexi/post/%E4%BD%BF%E7%94%A8-Resharper-%E5%BF%AB%E9%80%9F%E5%81%9A%E9%80%82%E9%85%8D%E5%99%A8.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://lindexi.gitee.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C# 在 构造函数添加 CallerMemberName 会怎样
在 C# 中有一个特性 CallerMemberName 可以给方法知道调用这个方法的方法名,在 UWP 中用这个特性很多,特别是在使用 MVVM 绑定
林德熙
2019/03/13
1.1K0
C# 在 构造函数添加 CallerMemberName 会怎样
C# 使用Emit深克隆
有人问,复制一个类所有属性到另一个类有多少方法?这也就是问深克隆有多少个方法,容易想的有三个。直接复制,反射复制,序列化复制。但是性能比较快的有表达式树复制 IL复制两个,本文主要讲最后一个
林德熙
2018/09/18
1K0
C# 使用Emit深克隆
VisualStudio 通过 EditorBrowsable 隐藏不开放的属性或方法
在开发中,总是会有一些方法不期望让大家直接使用到,就可以通过 EditorBrowsable 特性让智能提示不显示这个属性或方法
林德熙
2019/03/13
9270
dotnet C# 多次对一个对象调用构造函数会发生什么
今天来玩一点变态的,使用反射获取到某个类型的构造函数,接着多次对此类型的某个对象调用构造函数方法。请问此时会发生什么
林德熙
2021/09/10
8700
C# 7.2 通过 in 和 readonly struct 减少方法值复制提高性能
在 C# 7.2 提供了一系列的方法用于方法参数传输的时候减少对结构体的复制从而可以高效使用内存同时提高性能
林德熙
2019/03/13
1.5K0
C# 7.2 通过 in 和 readonly struct 减少方法值复制提高性能
Moq基础 判断方法被执行
例如有方法 Foo 支持注入接口 IFoo 需要判断在 Foo 方法里面调用 IFoo 的 Foo 方法几次
林德熙
2019/03/13
1.4K0
Moq基础 判断方法被执行
解决 VS 跳转定义和 Resharper 重复
在大约一周之前,Visual Studio 进行了一项更新,增加了 Ctrl+Click 点击跳转到定义的功能。这项功能与 ReSharper 重复了。
林德熙
2019/03/13
8060
解决 VS 跳转定义和 Resharper 重复
VisualStudio 修改配色 使用 VisualStudio 配色应用Resharper配色
如果觉得 VisualStudio 的配色不好看,那么可以到这个网站下载其他的配色。
林德熙
2018/09/19
2.1K0
VisualStudio 修改配色
            使用 VisualStudio 配色应用Resharper配色
dotnet C# 给结构体字段赋值非线程安全
在 dotnet 运行时中,给引用对象进行赋值替换的时候,是线程安全的。给结构体对象赋值,如果此结构体是某个类的成员字段,那么此赋值不一定是线程安全的。是否线程安全,取决于结构体的大小,取决于此结构体能否在一次原子赋值内完成
林德熙
2021/09/10
1K0
dotnet C# 给结构体字段赋值非线程安全
dotnet 通过 WMI 获取系统安装的驱动
对于驱动程序只需要知道驱动程序是哪个,是否运行就可以,至于安装日期和在安装在哪很多时候不需要知道
林德熙
2019/03/13
5710
win10 uwp 通知列表
经常看到小伙伴问,问已经绑定列表,在进行修改时,不会通知界面添加或删除。这时问题就在,一般使用的列表不会在添加时通知界面,因为他们没有通知。 本文:知道什么是通知的列表,如何去写一个通知列表。
林德熙
2019/03/13
6730
win10 uwp 通知列表
dotnet 使用 Qpush 快速从电脑到手机推送文字
在手机打字总不是方便,于是就有了 Qpush 这个工具,通过这个工具可以快速从电脑到手机推送文字。 但是这个工具没有找到客户端,于是我就给他写了一个库,通过这个库可以快速进行开发
林德熙
2019/03/13
6910
dotnet 使用 Qpush 快速从电脑到手机推送文字
微软最具价值专家 MVP 如何获得 Resharper 的免费功能
很多的开发工具都欢迎微软最具价值专家 MVP 使用这些工具,为了吸引更多的用户,会有各种活动 小伙伴都知道 Resharper 是太阳系 IDE 的最好插件,但是这个插件是比较贵的,虽然我的团队买了一堆 为了在自己的设备上体验 Resharper 强大的功能,于是我就通过 MVP 的福利注册了 Resharper 的账号,这样就可以免费使用,但是有一个义务就是给 Resharper 多加宣传。
林德熙
2019/03/13
1.2K0
微软最具价值专家 MVP 如何获得 Resharper 的免费功能
PowerShell 通过 WMI 获取系统安装的驱动
如果需要通过 PowerShell 获取系统安装的驱动的日期和安装的路径,请加上 InstallDate 驱动日期 PathName 请看代码
林德熙
2019/03/13
1.4K0
Roslyn 将这个文件放在你的项目文件夹,无论哪个控制台项目都会输出林德熙是逗比
虽然已经通过很多篇博客告诉大家如何通过 Directory.Build.props 文件修改编译的方法,但是本文还是提供一个新的思路 只需要在项目文件夹,或者磁盘的文件夹,如 E:\ 放下本文提供的 Directory.Build.props 文件,整个文件夹内的控制台项目就会输出 林德熙是逗比 想要知道是怎么做的,请看下面
林德熙
2019/03/13
8500
C#编程 | 那些C#中很少人知道的科技
本文来告诉大家在C#很少有人会发现的科技。即使是工作了好多年的老司机也不一定会知道,如果觉得我在骗你,那么请看看下面。
Enjoy233
2021/12/23
7690
C#编程 | 那些C#中很少人知道的科技
VisualStudio 通过外部调试方法快速调试库代码
在开发的时候,我有一个很大的项目,里面包含了 1000 个项目,但是我需要调试里面的一个库,如果直接修改这个库,会让 VisualStudio 重新编译 90 个项目,于是这样的调试的速度就太慢 本文告诉大家如何通过外部调试的方法,每次调试只需要编译这个库不需要编译其他的项目
林德熙
2019/03/13
1.2K0
VisualStudio 通过外部调试方法快速调试库代码
dotnet 使用 Obsolete 特性标记成员过时保持库和框架的兼容性
在开发库以及框架的时候,持续维护会遇到兼容性的问题,如发现了旧版本有一些接口设计不合理,或者方法命名不符合逻辑等。此时如果直接更改原有的属性名或方法名甚至类名等,将会导致上层业务的开发者们在升级库之后构建不通过,因为缺少对应的方法。此时就需要上层业务的开发者们查阅文档才能了解如何应对升级之后带来的变动
林德熙
2020/11/19
6260
WPF 使用 RenderTargetBitmap 快速截图出现 COMException 提示
本文告诉大家一个最简单步骤让 RenderTargetBitmap 出现 COMException 提示
林德熙
2019/03/13
1.6K0
dotnet C# 如果在构造函数抛出异常 是否可以拿到对象赋值的变量
如果使用某个变量去获取某个类型的对象创建,但是在这个类型的构造函数调用时抛出异常,请问此变量是否可以拿到对应的对象
林德熙
2021/12/24
1K0
推荐阅读
相关推荐
C# 在 构造函数添加 CallerMemberName 会怎样
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验