C# 快速操作属性-仅getter?

C# 快速操作属性-仅getter?,c#,visual-studio,C#,Visual Studio,在Visual Studio中,假设我有一个如下所示的类字段: private string name; public string Name { get => name; set => name = value; } private readonly string name; 我可以右键单击该字段并选择“快速操作和重构>封装字段”,这将创建如下属性: private string name; public string Name { get => name; set

在Visual Studio中,假设我有一个如下所示的类字段:

private string name;
public string Name { get => name; set => name = value; }
private readonly string name;
我可以右键单击该字段并选择“快速操作和重构>封装字段”,这将创建如下属性:

private string name;
public string Name { get => name; set => name = value; }
private readonly string name;
如果我有一个如下所示的字段:

private string name;
public string Name { get => name; set => name = value; }
private readonly string name;
我使用快速操作创建属性,它只创建一个getter:

public string Name => name;
我有时有一些私有字段,这些字段在类中不应该是只读的,而应该是来自其他类的只读字段。换句话说,我想要这个:

private string name;
public string Name => name;

如果字段不是只读的,有没有办法让Visual Studio生成这样的getter-only属性?

我确信这是一种特殊情况,您不应该期望它成为VS中的标准功能。如果这让您感到困扰,可以从创建
只读
字段开始,生成访问器,然后删除
readonly
part,因为外部没有readonly属性,内部没有readonly属性。ReadOnly意味着它在构造时只能更改一次。您需要的是一个私有setter,如下所示:
publilc字符串名{get;private set;}
。但是你不可能期望VS知道这就是你想要的。如果您愿意,您可以创建自己的快速操作,如果这是一个重构大量代码的问题。@Michael我将调用
public string Name=>Name
是一个“只读属性”,因为它只能用于读取值,而不管
name
是否为
readonly
字段。但这是语义学。