C#中扩展方法能否实现无需显式写this的成员方法式调用?
结论
可以实现该需求,C# 6.0及更高版本已经支持对应特性,操作方式如下:
操作步骤
- 第一步:在测试类对应的代码文件头部,使用
using static语法导入你的扩展方法所在的静态类,示例如下:
// 替换为你自己的命名空间 using static YourNamespace.TestableTowerCollection; // 其他存放扩展方法的静态类也按同样方式导入 using static YourNamespace.MockExtensionMethods;
- 第二步:导入完成后,即可在继承了
UnitTestWithGameObjects的测试类中直接调用扩展方法,无需额外加this.前缀:
[SetUp] public void SetUp() { _properties = new Properties(); // 无需加this.即可调用,和Kotlin隐式this效果一致 _towerCollection = TestTowerCollection( _properties, cameraPosition: new Vector3(4, 0, -100000) ); }
注意事项
- 如果多个导入的静态类存在同名扩展方法,会出现调用冲突,此时可以选择显式加
this.调用,或者显式指定静态类名+方法名的方式调用 - 建议团队内对齐该写法规范,避免出现方法来源不清晰的问题
内容的提问来源于stack exchange,提问作者User1291
相关产品推荐
相关产品推荐

