防止 Visual Studio 将 setter 方法限制为内部

Posted

技术标签:

【中文标题】防止 Visual Studio 将 setter 方法限制为内部【英文标题】:Prevent visual studio from limiting the setter method to internal 【发布时间】:2016-10-28 11:59:34 【问题描述】:

嗯,我使用 Visual Studio 2015 CE,更新 2。 我通常做的一种生产力技巧是创建空模型类,例如:

public class PersonModel


然后在选择表达式中使用它们,例如:

db.People.Where(p => someCondition)
.Select(p => new PersonModel

    Id = p.Id,
    Name = p.Name,
    //set other properties
).ToList();

然后我转到尚不存在的属性IdName,...并按Control+. 让Visual Studio 为我提供generate property Id。 一切都很好,但它会创造:

public int Id  get; internal set; 

如果我在 asp.net webapi 模型绑定中使用相同的方法,绑定将静默失败并给我Id = 0

所以我的问题是:是否有任何选项可以要求 VS 创建公共设置器,即:

public int Id  get; set; 

【问题讨论】:

2021 和 Visual Studio 在代码生成中不断且不灵活地使用 internal 关键字仍然限制了潜在的生产力提升。 grrrr,这需要排序,太烦人了。有谁知道是否有开放的用户声音来支持它? 【参考方案1】:

您可以通过键入prop 并按两次TAB 来做到这一点。它会要求您输入属性的类型和名称,但不会从现有属性中提取它。

最好的问候。

【讨论】:

【参考方案2】:

所以我的问题是:是否有任何选项可以要求 VS 创建公共设置器,即:

不,没有办法修改快捷方式以自动添加具有公共集的属性。 尽管您的生产力技巧很简洁,但最好的选择是自己创建它。

【讨论】:

【参考方案3】:

在 Visual Studio 2017 中仍然如此,我使用相同的“生产力技巧”。

我最近得到了 Resharper,它确实使用了我们所期望的公共设置器。

【讨论】:

以上是关于防止 Visual Studio 将 setter 方法限制为内部的主要内容,如果未能解决你的问题,请参考以下文章

我们如何在 Visual Studio 中生成 getter 和 setter?

如何防止 Visual Studio 将 SAK 添加到 prj 文件

多线程:防止 Visual Studio 阻塞特定线程 [重复]

如何防止 Visual Studio 警告缺少调试信息?

怎么让android studio的编译的aar防止反编译

防止在 Visual Studio 中加载符号