26

Well, I use visual studio 2015 CE, update 2. One productivity hack I usually do is that I create empty model classes like:

public class PersonModel
{
}

and then use them in a select expression like:

db.People.Where(p => someCondition)
.Select(p => new PersonModel
{
    Id = p.Id,
    Name = p.Name,
    //set other properties
}).ToList();

Then I go to the yet non-existing properties Id and Name, ... and press Control+. to ask visual studio to generate property Id for me. All great, but it will create:

public int Id { get; internal set; }

and if I use the same method in an asp.net webapi model binding, the binding will fail silently and give me Id = 0.

So my question is: is there any option to ask VS to create public setter, i.e.:

public int Id { get; set; }
Hamid Pourjam
  • 20,441
  • 9
  • 58
  • 74
Alireza
  • 5,421
  • 5
  • 34
  • 67
  • 2
    2021 and Visual Studio's incessant and inflexible use of the `internal` keyword in code generation is still knee-capping the potential productivity increases. – pettys Mar 03 '21 at 19:54
  • grrrr, this needs sorting, so annoying. Does anyone know if there is an open user voice to upvote it? – James Hatton Jun 26 '21 at 14:37

3 Answers3

1

You can do that by typing prop and press the TAB twice. It will require you to enter type and name for property though, won't extract it from existing one.

Best regards.

Caldazar
  • 2,801
  • 13
  • 21
1

So my question is: is there any option to ask VS to create public setter, i.e.:

No, there is no way to modify the shortcut to automatically add the property with a public set. Although your productivity hack is neat, your best bet is to create it yourself.

Restnom
  • 124
  • 1
  • 15
1

Still the same in Visual Studio 2017 and I use the same "productivity hack".

I recently got Resharper and it does use the public setter as we would expect it.

PeterFromCologne
  • 10,213
  • 9
  • 36
  • 46