One method for changing one of the properties I have a few resources set in my class – coins, diamonds, hearts, enum of these resources names, and method for increasing specified resource. I want to make single "Increase" method for all resources that wouldn't have switch statement. Sort of single-line not overloaded "generic" method independently on which property to increase. Below is the best what I achieved so far. Please advice on best approach to be taken for the described Increase method.

public enum ResourceType { Coins, Diamond, Hearts };

private static int Coins { get { return resourceBox[ResourceType.Coins]; } }
private static int Diamonds { get { return resourceBox[ResourceType.Diamonds]; } }
private static int Hearts { get { return resourceBox[ResourceType.Hearts]; } }
private static Dictionary&lt;ResourceType, int&gt; resourceBox = new Dictionary&lt;ResourceType, int&gt;();

private void Init()
{
    resourceBox.Add(ResourceType.Coins, 0);
    resourceBox.Add(ResourceType.Diamond, 0);
    resourceBox.Add(ResourceType.Hearts, 0);
}

public static void Increase(ResourceType _res, int _income)
{
resourceBox[_res] += _income;
}


However this leads to situation where Dictionary is a primary resource storage, which may not be desired in future.
I wonder what could be another (not obligatory dictionary) way to create Increase method as described above.
I find there is nothing wrong with using a dictionary here. What I'm worried about are those properties:


private static int Coins { get { return resourceBox[ResourceType.Coins]; } }
private static int Diamonds { get { return resourceBox[ResourceType.Diamonds]; } }
private static int Hearts { get { return resourceBox[ResourceType.Hearts]; } }



Why do you need them? They are not only static but also private. If you cannot access them from the outside how are you going to use them? 

You didn't include the complete class definition but just a small snippet so it's hard to give you more feedback.