Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way, at design time, to initialize an object with all properties in Visual Studio 2010?

Background

I am writing code in VS 2010, .NET 4, C#. Also, in case it matters, I am using the latest version of ReSharper.

Question

Let's say I have this model:

public class SomeObject
        {
            public string Red{ get; set; }
            public string Green{ get; set; }
            public string Blue{ get; set; }
            public string Yellow{ get; set; }
            public string Purple{ get; set; }
            public string Orange{ get; set; }
            public string Black{ get; set; }
        }

Elsewhere in the code, I need to instantiate one of these objects, like so:

SomeObject myObject = new SomeObject{
                                     red = "some value", 
                                     blue = "some other value",
                                     . . .,
                                     black="last value"
                                    };

*NOTE:*I will sometimes want to initialize this object with only a subset of its total possible properties (i.e. just red and blue).

At the moment, I am having to type in each property (red, blue, green, etc) for each new instance of SomeObject. Is there a hotkey or something in VS2010 to have those properties pre-populated so I just have to assign values to each rather than typing each one?

like image 262
Matt Cashatt Avatar asked Jan 31 '12 16:01

Matt Cashatt


People also ask

Which is used to initialize object?

Objects can be initialized using new Object() , Object. create() , or using the literal notation (initializer notation).

How do you initialize an object with an object?

To create an object of a named class by using an object initializer. Begin the declaration as if you planned to use a constructor. Type the keyword With , followed by an initialization list in braces. In the initialization list, include each property that you want to initialize and assign an initial value to it.

What does it mean to initialize objects?

initializing means setting value to an object.(does not necessarily create new instance). assigning is self descriptive. assign a value to an object.


2 Answers

You can use Smart Code Completion.

Write: new SomeObject{

Then press Ctrl+Alt+Space: -> All possible properties are listed in a tooltip window

Then select a property (i.e. 'Red') and press ENTER -> new SomeObject{Red = }

Then type in "," and press again Ctrl+Alt+Space, select next property and so on.

like image 147
brgerner Avatar answered Oct 07 '22 13:10

brgerner


At the moment, I am having to type in each property (red, blue, green, etc) for each new instance of SomeObject.

Personally, if you need to set these for every object instance, I would handle this by adding a constructor that takes all of the parameters, and just not use the object initialization syntax. This will give you full intellisense, but also help/force you to construct the object correctly every time.

Remember, a type's constructor should force you to supply all parameters required to correctly initialize the object to a proper state. The one downside to object initializers is that they don't force this at compile time. As such, if all of these properties are required for each object instance, the constructor should supply them instead of using object initializers.

like image 30
Reed Copsey Avatar answered Oct 07 '22 13:10

Reed Copsey