You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何ReSharper自动将对象转为基类?如何关闭该自动补全行为

解决ReSharper自动为基类方法插入强制类型转换的问题

问题场景

编写派生自Observable基类的ViewModel属性时,输入SetProperty(后,ReSharper自动将代码转换为((Observable)this).SetProperty(...),已确认该行为由ReSharper导致(暂停后消失),且基类的SetProperty方法为protected未被重写:

ViewModel属性示例:

public Point ScanPos 
{
    get => _scanPos; 
    set => SetProperty(ref _scanPos, value); 
}

private Point _scanPos;

基类Observable的SetProperty实现:

protected bool SetProperty<T>(
    ref T                      currentValue,
    T                          newValue,
    [CallerMemberName] string? propertyName = null)
{
    if (Equals(currentValue, newValue))
        return false;

    currentValue = newValue;
    // ReSharper disable once ExplicitCallerInfoArgument
    RaisePropertyChanged(propertyName);
    return true;
}

解决方案

无需关闭括号触发的自动补全,只需调整ReSharper的以下设置:

  1. 打开ReSharper设置(菜单路径:ReSharper → Options;快捷键:Alt+R, O)
  2. 导航到Code Editing → C# → Code Completion → Behavior
  3. 找到并取消勾选**"Qualify base members with base type cast"**(部分版本翻译为"使用基类转换限定基成员")
  4. 若上述选项不存在,可切换到Code Editing → C# → Code Style → References,将**"Qualify references to base class members"**设置为Do not qualify

修改设置后,重新输入SetProperty(即可正常补全,不会自动插入基类强制转换。

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 10:50:29